这是我的ajax电话:
$.ajax({
url: 'url-to-json',
type: 'POST',
dataType: 'json',
cache: 'false',
data: { lat: lat, lng: lng }
}).done(function(data) {
$.each(data, function(a) {
alert(data[a]);
});
});
这是它正在迭代的json:
[
{"Id":"4c75bd5666be6dcb9f70c10f","Name":"BXtra","EnglishName":null,"Lat":35.7515869140625,"Lng":139.33872985839844},
{"Id":"4c5160a1d2a7c9b655d51211","Name":"セブンイレブン 武蔵野台店","EnglishName":null,"Lat":35.750205993652344,"Lng":139.33448791503906},
...
]
但是实际上不是让我访问json数组中每个项的属性,而是逐个循环遍历数组中的每个字符。
我做错了什么?
答案 0 :(得分:9)
您可以通过两种方式修改$.each
功能:
$.each(data, function(index,el) {
// el = object in array
// access attributes: el.Id, el.Name, etc
});
或者,
$.each(data, function() {
// this = object in array
// access attributes: this.Id, this.Name, etc
});
如果data
是done
函数中的字符串而不是对象,那么您需要运行
data = $.parseJSON(data)
在$.each
循环之前
答案 1 :(得分:4)
使用this
引用.each
中的当前元素:
$.ajax({
url: 'url-to-json',
type: 'POST',
dataType: 'json',
cache: 'false',
data: { lat: lat, lng: lng }
}).done(function(data) {
$.each(data, function() {
alert(this.Id);
});
});
答案 2 :(得分:0)
也许你的服务器没有为JSON('application / json')返回正确的MIME类型,而JQuery正在将它解释为一个字符串?
答案 3 :(得分:0)
成功总是对我有用:
$.ajax({
url: 'url-to-json',
type: 'POST',
dataType: 'json',
cache: 'false',
data: { lat: lat, lng: lng },
success: function(data) {
$.each(data, function() {
alert(this.Id);
});
}
});
如果正在播放数据类型,强制解析JSON将:jQuery.parseJSON( json )
作为临时修复...