我的jQuery.ajax返回JSon对象。我首先阅读其他文章。但他们的回应文字不喜欢我的。 我的回复内容:来自firebug回复
{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}
现在我试图提醒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;
});
},
});
});
但警告“undefined”
答案 0 :(得分:9)
item的值是一个字符串。因此,您首先需要将其解析为json。试试这个。
$("#jsonResponse").html(msg);
var item = jQuery.parseJSON(msg.item)
$.each(item, function(i, d) {
alert(this.country);
debugger;
});
},
答案 1 :(得分:7)
{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}
^
|
+---- It's a string, not an array !
您的JSON应该看起来像
{"item":[ {"country":"USA","lan":"EN"},{"country":"Turkiye","lan":"TR"}]}
然后您可以像
一样访问它country = msg.item[0];
lang = country.lan;
for (i=0; i< item.length; i++) { alert ( item[i].country); }
等...
答案 2 :(得分:2)
原因是msg.item
是一个字符串。
它是字符串的原因是item:
之后的初始双引号。这也解释了为什么你的双引号被转义。你有:
{"item":"[{\"country\":\"USA\",\"lan\":\"EN\"},{\"country\":\"Turkiye\",\"lan\":\"TR\"}]"}
当你应该:
{"item":[{"country":"USA","lan":"EN"},{"country":"Turkiye","lan":"TR"}]"}