我收到以下字符串:
[{"Key":1,"Value":"correct"},{"Key":2,"Value":"incorrect"},{"Key":3,"Value":"incorrect"},{"Key":4,"Value":"correct"},{"Key":5,"Value":"incorrect"}]
我想根据TR中的ID是否在JSON中具有“正确”或“不正确”的值来更改TR的背景颜色。
如何从JSON获取单个项目的值?我试过了:
success: function (result) {
// update with results
//alert(JSON.stringify(result));
//$('#myDiv').html(JSON.stringify(result));
// non of these work
alert(result[0]);
alert(result[key]);
},
答案 0 :(得分:2)
您可以使用$.each()
来迭代对象数组。
$.each(result, function(i, item) {
alert(item.Key);
});
在回调$.each()
时,item
将是对正在迭代的数组中当前项的引用。
然后,您只需使用普通属性访问即可获取Key
属性的值。
当然,您也可以使用传统的for
语句循环数组。
for (var i = 0; i < result.length; i++) {
var item = result[i];
alert(item.Key);
}
所有这一切都假定您的回复具有正确的Content-Type
设置,或者您已将dataType:"json"
提供给$.ajax()
。
答案 1 :(得分:1)
您可以将JSON格式转换为Object,在您的情况下它将是数组,因此您可以使用forEach来检查您想要的内容。
试试这个
var obj= JSON.parse( '[{"Key":1,"Value":"correct"},{"Key":2,"Value":"incorrect"},{"Key":3,"Value":"incorrect"},{"Key":4,"Value":"correct"},{"Key":5,"Value":"incorrect"}]' );
obj.forEach(function(i){alert(i.Key);alert(i.Value) })
答案 2 :(得分:1)
看看这个:http://goessner.net/articles/JsonPath/.I没有使用它,但看起来和从Json结构中获取值的好方法。
答案 3 :(得分:0)
确保在Ajax请求中指定.. dataType:'json'
尝试
alert(result[0]["key"]); // For the first
//
$.each(result , function(i) {
console.log( 'Key is - ' + result[i]["Key"] + ' -- Value is - ' + result[i]["Value"]);
});
答案 4 :(得分:0)
你没有指定,但假设你的ajax代码接收的是JSON字符串作为响应,那么你实际上是重新JSONing该文本,所以它变成了一个双重编码的字符串。
jquery可以为你自动解码回原生结构,如果你告诉你是在期待json作为回应,例如
$.ajax({
dataType: 'json',
etc...
});
然后你只需要
alert(result[0]['key']);
或
data = jquery.parseJSON(result);
alert(data[0]['key']);