2012-04-21 169 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