簡體   English   中英

將jquery變量傳遞給ajax數據

[英]Passing jquery variable to ajax data

我正在嘗試將這些變量從3個隱藏字段傳遞給ajax的數據。

我得到正確的變量。 我通過console.log進行了驗證。 我試圖解析json,但對我而言卻沒有。

我未捕獲到的錯誤異常:[異常...“無法轉換JavaScript參數” nsresult:“ 0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)”位置:“ JS框架:: http://code.jquery.com/jquery-latest.js :: ::第7740行“數據:否]第2行

我試圖使用ajax請求將這些變量傳遞給我的控制器。 數據字符串中的其他變量我完全沒有問題。 當用戶單擊星級時,這些值將發布並插入到數據庫中。

以下是變量:

       var TweetUserId =  $(this).parents().prevAll('input[type=hidden:first]') ;
          var TweetScreenName =  $(this).parents().prevAll('input[type=hidden:second]') ;
          var TweetPostText = $(this).parents().prevAll('input[type=hidden:third]') ;
 // making it an object didnt work
         //  TweetUserId = new Object; TweetUserId = (TweetUserId);
          // TweetScreenName = new Object; TweetScreenName = (TweetScreenName);
         //  TweetPostText = new Object; TweetPostText = (TweetPostText);

這是要求

          $.ajax({
              url: '/Home/GetRating', //your server side script
              dataType: "json",
              data: { id: ratingid, value: value, TweetUserId: TweetUserId, TweetScreenName: TweetScreenName, TweetPostText: TweetPostText, tweetday: dateoftweet, tweettime: timeoftweet }, //our data
              type: 'POST',
              success: function (data) {
                  //$('#ratemsg').html(data);
                  msg.html(" The TweetId is " + ratingid + " the vote value is " + value + " " + dateoftweet + "  " + timeoftweet  );
                  //       console.log(hiddenValue);
              },
              error: function (jxhr, msg, err) {
                  //  $('#response').append('<li style="color:red">' + msg + '</li>');
                  msg.html(data);
              }
          });
      });

  });
  1. 您使用選擇器的方式錯誤,有些無效:first :second :third
    (它們應位於[type=hidden] ,並且沒有:second :third ..請使用:eq()選擇器代替
  2. 您正在將元素而不是它們的值傳遞給ajax請求。

填充變量時使用它。

 var TweetUserId =  $(this).parents().prevAll('input[type="hidden"]:eq(0)').val();
 var TweetScreenName =  $(this).parents().prevAll('input[type="hidden"]:eq(1)').val();
 var TweetPostText = $(this).parents().prevAll('input[type="hidden"]:eq(2)').val();

作為一般模式,當您打算多次使用jQuery對象時,最好重新緩存它,而不是重新選擇它。

所以你可以用

 var hiddenElements = $(this).parents().prevAll('input[type="hidden"]'),
     TweetUserId =  hiddenElements.eq(0).val(),
     TweetScreenName =  hiddenElements.eq(1).val(),
     TweetPostText = hiddenElements.eq(2).val();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM