以下是我的操作返回的JSON字符串:
[{"Key":"Likes","Value":1},{"Key":"Loves","Value":0},{"Key":"Dislikes","Value":0},{"Key":"Message","Value":"Your vote has been changed"}]
以下是我尝试访问它们的方式:
$.ajax({
type: "POST",
url: '/voteUrl',
data: { id : '37', vote : $(this).attr('id') },
dataType: "json",
success: function(result) {
$('#like').text(result.Likes);
$('#love').text(result.Loves);
$('#dislike').text(result.Dislikes);
}
});
有span标签,其中包含id“Like”,“Love”和“Dislike”。在动作上,有一个动态结果,具有如下属性:
results.Likes = 1;
results.Loves = 0;
results.Dislikes = 0;
results.Message = "Your vote has been changed";
但是没有使用正确的值更新span标记。 ajax调用正在运行,FireBug显示返回JSON字符串,我相信我正在尝试正确访问键,results.PropertyName。有什么遗漏?
答案 0 :(得分:3)
做这样的事情
success: function(data) {
var results = [];
for(var i=0; i < data.length; i++){
results[data[i]["Key"]] = data[i]["Value"];
}
$('#like').text(result.Likes);
$('#love').text(result.Loves);
$('#dislike').text(result.Dislikes);
}
答案 1 :(得分:1)
您正在返回一个数组,所以要显示所有数组,您必须使用for
循环。同样在您当前的代码中,您不是按键访问数组。正确的代码可能是:
success: function(result) {
for(var i=0;i<result.length;i++)
$('#like').text(result[0].Value); //got likes in first iteration
...
}
或者如果您有固定的长度,则直接获取值而不是forloop,或者如果您想使用for
循环