我无法通过AJAX获得嵌套的JSON结果

I cannot get nested JSON-results through AJAX

本文关键字:嵌套 JSON 结果 AJAX      更新时间:2024-04-25

我已经尝试过遵循多个关于如何做到这一点的指南,但都不起作用。我还尝试在现有的函数中添加$.each-函数,但没有成功。这就是我的JSON结果(它只是一个片段,当直接复制到这里时可能会被破坏,但你明白了):

 {
      "loc": [
        {
          "path_id": "Trail1",
          "places": [
            {
              "way_distance": 2,
              "trace_location": {
                "lat": 51.2383342365623,
                "lng": 20.265387296676636
              },
              "trace_info": "",
              "way_name": ""
            }
          ]
        }
       ]
    }  

我可以从"path_id"中获取数据,但不能从"trace_location"中获取,代码如下:

    $.getJSON(url, function(data){
        $.each(data.loc,function(i,emp){
                var a = this.path_id;
                console.log(a); //works
                var b = this.places[0].trace_location;
                var c = this.places.trace_location;
                console.log(b); //seems to output objects, but then crashes
                console.log(c); //output is undefined
       });
});

当我做console.log(b);时;,系统以以下错误进行响应:

tringhar.html:36 Uncaught TypeError: Cannot read property 'trace_location' of undefined

我希望能够从"trace_location"输出数据,而不会出现undefined或错误。非常感谢。

编辑:

仍然无法使用此代码:

    var url = 'https://forward-byte-711.appspot.com/read/Test/Development/en';
$(function(){
            $.getJSON(url, function(data){
              $.each(data.paths,function(i,emp){          
                var b = this.places[0].place_position;
                console.log(b);
                });

            });
});

places是一个数组。

var c = this.places.trace_location;

需要

var c = this.places[0].trace_location;

这是一个CodePen的例子-它正在中工作

在您的示例中,它崩溃的原因不是因为console.log(b)语句,而是因为您试图从未定义的位置访问trace_location。从代码中删除var cconsole.log(c)语句。

这里有一个jsfiddle。json的其余部分可能有其他问题,或者您的一个对象实际上没有您试图在json提要中访问的属性。例如,place在json中没有trace_location

var data = {
  "loc": [{
    "path_id": "Trail1",
    "places": [{
      "way_distance": 2,
      "trace_location": {
        "lat": 51.2383342365623,
        "lng": 20.265387296676636
      },
      "trace_info": "",
      "way_name": ""
    }]
  }]
};
data.loc.forEach(function(item) {
  console.log(item);
  item.places.forEach(function(place){
    console.log(place);
  });
});