2012-04-21 167 views
1

我想將這些變量從3個隱藏字段傳遞給ajax的數據。將jQuery變量傳遞給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
  1. 您的使用選擇了錯誤的方式,有些是無效:first:second:third
    (他們應該到外面去[type=hidden]並沒有:second:third ..我們E中的: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對象,而不是重新選擇它。

所以你可以imp用

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

謝謝你,我現在明白了 – 2012-04-21 14:06:34