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

时间:2013-10-21 07:40:45

标签: javascript jquery

我正在尝试解析从$.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"}]

我该怎么做?

4 个答案:

答案 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');