4

这是我的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 数组中每个项目的属性,而是逐个循环遍历数组中的每个字符。

我究竟做错了什么?

4

4 回答 4

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

如果datadone函数中的字符串而不是对象,那么您需要运行

data = $.parseJSON(data)

在你的$.each循环之前

于 2012-07-05T15:49:06.400 回答
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);
    });
});
于 2012-07-05T15:43:58.940 回答
0

也许您的服务器没有为 JSON ('application/json') 返回正确的 MIME 类型,而 JQuery 将它解释为只是一个字符串?

于 2012-07-05T16:00:59.137 回答
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 )如果 dataType 正在播放,则作为临时修复...

于 2012-07-05T16:13:36.017 回答