我试图将这些变量从3个隐藏字段传递给ajax的数据。
我得到了正确的变量。我通过console.log验证了。我试图解析json,但它不适合我。
错误我得到未捕获的异常:[异常......“无法转换JavaScript参数”nsresult:“0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)”location:“JS frame :: http://code.jquery.com/jquery-latest.js :: :: line 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);
}
});
});
});
答案 0 :(得分:1)
:first
:second
:third
[type=hidden]
而没有:second
:third
..请使用:eq()
选择器填充变量时使用此选项..
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();