我正在尝试解析从$.post()
返回的数据。
[{"id":"1","text":"USD"},
{"id":"2","text":"CNY"},
{"id":"3","text":"PHP"},
{"id":"4","text":"AUD"},
{"id":"5","text":"SGD"},
{"id":"6","text":"JPY"}]
使用此方法Jquery, looping over a json array
我做了类似的事情:
$.post(
base_url+'cgame/currency',
{ gameID: gameID },
function(data) {
$(this).html();
$.each(data,function(idx, obj) {
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
});
}
);
但它给了我错误:
未捕获的TypeError:无法使用'in'运算符在
[{"id":"2","text":"CNY"},{"id":"3","text":"PHP"},{"id":"4","text":"AUD"},{"id":"5","text":"SGD"},{"id":"6","text":"JPY"}]
中搜索“120”
我也尝试过:
$.post(
base_url+'cgame/currency',
{ gameID: gameID },
function(data) {
$(this).html();
$(data).each(function(idx, obj) {
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
});
}
);
但它也给了我错误:
未捕获错误:语法错误,无法识别的表达式:
[{"id":"1","text":"USD"},{"id":"6","text":"JPY"}]
我该怎么做?
答案 0 :(得分:2)
您的数据以数组的形式出现,因此您需要循环遍历每个索引,然后获取值。所以你可以替换它: -
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
: -
$.each( obj, function( key) {
console.log( obj[key].id + ':' + obj[key].text);
});
或者你可以这样做: -
$.each( obj, function( key, value ) {
console.log( value.id + ':' + value.text);
});
key是数组的索引。它将返回0,1,2 ..
答案 1 :(得分:1)
我认为传递给你的成功回调函数的参数是string类型。将其更改为:
function(data) {
var parsedData = JSON.parse(data);
$(this).html();
$.each(parsedData ,function(idx, obj) {
$(obj).each(function(key, value) {
console.log(key + ": " + value);
});
});
}
答案 2 :(得分:1)
function(data) {
var value = JSON.parse(data);
$.each(value ,function(idx, obj) {
console.log("id : "+obj.id+" "+text:"+obj.text);
});
}
答案 3 :(得分:0)
试试这个
$.post(base_url+'cgame/currency',{ gameID: gameID },
function(data) {
$(this).html(); //<-- becareful $(this) might not be the element you think it is
$.each(data,function(idx, obj) {
console.log( "id : " + obj.id);
console.log( "text: " + obj.text);
});
},'JSON');