如何像对象一样操纵Json响应?

lov*_*iji 3 ajax jquery json

我的jQuery.ajax返回JSon对象.我首先阅读其他文章.但他们的回应文字不喜欢我的. 我的回复内容:来自萤火虫响应

{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}
Run Code Online (Sandbox Code Playgroud)

现在我试图提醒countryName:

$('#loadData').click(function() {
            $.ajax({
                type: "POST",
                url: "WS/myWS.asmx/getDaa",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                $("#jsonResponse").html(msg);
                    $.each(msg.item, function(i, d) {
                        alert(this.country);
                        debugger;
                    });
                },
            });
        });
Run Code Online (Sandbox Code Playgroud)

但它警告"未定义"

jit*_*ter 9

item的值是一个字符串.因此,您首先需要将其解析为json.试试这个.

$("#jsonResponse").html(msg);
    var item = jQuery.parseJSON(msg.item)
    $.each(item, function(i, d) {
        alert(this.country);
        debugger;
    });
},
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您的jquery调用需要JSON响应(dataType:"json"),jquery会为您解析它.正确的解决方案是*not*使用parseJSON再次解析它(即使它在这种情况下有效),但要在脚本中输出正确的JSON"WS/myWS.asmx/getDaa" (2认同)

Dav*_* V. 7

{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}
        ^
        |
        +---- It's a string, not an array !
Run Code Online (Sandbox Code Playgroud)

你的JSON应该是这样的

{"item":[ {"country":"USA","lan":"EN"},{"country":"Turkiye","lan":"TR"}]}
Run Code Online (Sandbox Code Playgroud)

然后你就可以像访问它一样

country = msg.item[0];
lang    = country.lan;

for (i=0; i< item.length; i++) { alert ( item[i].country); }
Run Code Online (Sandbox Code Playgroud)

等等...