Javascript 循环接收到的json字符串以通过jquery获取值

Javascript 循环接收到的json字符串以通过jquery获取值,javascript,jquery,Javascript,Jquery,我正在尝试分析从$.post()返回的数据 使用这种方法 我是这样做的: $.post( base_url+'cgame/currency', { gameID: gameID }, function(data) { $(this).html(); $.each(data,function(idx, obj) { $(obj).each(function(key, value) { c

我正在尝试分析从
$.post()
返回的数据

使用这种方法

我是这样做的:

$.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);
            });
        });
    }
);
但它给了我一个错误:

未捕获类型错误:无法使用'in'运算符在
[{“id”:“2”,“text”:“CNY”},{“id”:“3”,“text”:“PHP”},{“id”:“4”,“text”:“AUD”},{“id”:“5”,“text”:“SGD”},{“id”:“6”,“text”:“JPY”},

我还尝试:

$.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”}]

我应该怎么做呢?

试试这个

$.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');
$.post(基本url+'cgame/currency',{gameID:gameID},
功能(数据){
$(this.html();//试试这个

$.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');
$.post(基本url+'cgame/currency',{gameID:gameID},
功能(数据){

$(this).html();//我认为传递给成功回调函数的参数是字符串类型。将其更改为:

 function(data) {
var parsedData = JSON.parse(data);
    $(this).html();
    $.each(parsedData ,function(idx, obj) {
        $(obj).each(function(key, value) {
            console.log(key + ": " + value);
        });
    });
}

我认为传递给成功回调函数的参数是字符串类型。请将其更改为:

 function(data) {
var parsedData = JSON.parse(data);
    $(this).html();
    $.each(parsedData ,function(idx, obj) {
        $(obj).each(function(key, value) {
            console.log(key + ": " + value);
        });
    });
}

您的数据以数组的形式出现,因此您需要循环遍历每个索引,然后获取值。因此,您可以替换以下内容:-

 $(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);
 });

键是数组的索引。它将返回0,1,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..

我猜您需要在迭代之前将JSON字符串(数据)解析为JSON对象。请尝试JSON.parse(数据)并进行迭代。我猜您需要在迭代之前将JSON字符串(数据)解析为JSON对象。尝试JSON.parse(数据)我很抱歉,但仍然在我的帖子上出现第二个错误。但是谢谢你的帮助:Dim抱歉,但仍然在我的帖子上出现第二个错误。但是谢谢你的帮助:D感谢你的努力:D我已经根据你的回答和我帖子上面的评论找到了答案。这给出了0:[object]grid.js:159 0:[对象对象]grid.js:159 0:[对象对象]grid.js:159 0:[对象对象]grid.js:159 0:[对象对象对象]grid.js:159 0:[对象对象]。没有错误,但值仍然不正确。因此,我所做的是删除代码的第二个循环。感谢您的努力:我已经根据您和我帖子上面的评论找到了答案。这给出了0:[object object]grid.js:159 0:[object object]grid.js:159 0:[object object]grid.js:159 0:[object]grid.js:159 0:[object object]grid.js:159 0:[object object]grid.js:159 0:[object object]。没有错误,但值仍然不正确。因此,我所做的是删除代码的第二个循环。是的,谢谢。你的第二个答案也是我从eggward和fibbe建议中发现的。是的,谢谢。你的第二个答案也是我从eggward和fibbe建议中发现的。