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

时间:2016-04-11 19:54:03

标签: javascript jquery json ajax

我曾尝试按照多个指南来说明如何执行此操作 - 但没有一个可行。我还尝试在现有函数中添加>>> for line in fileContents: ... items = line.strip().split(';') - 函数,但没有成功。这就是我的JSON结果(它只是一个片段,在这里直接复制时可能会被破坏,但你明白了这一点):

$.each

我可以从“path_id”获取数据,但不能从“trace_location”获取数据,使用以下代码:

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

        }
       ]
    }  

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

    $.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

       });
});

我希望能够从“trace_location”输出数据,而不是tringhar.html:36 Uncaught TypeError: Cannot read property 'trace_location' of undefined 或有错误。谢谢。

编辑:

仍未使用此代码:

undefined

2 个答案:

答案 0 :(得分:1)

places是一个数组。

var c = this.places.trace_location;

需要

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

Here's a CodePen with the example - 它正在运作

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

答案 1 :(得分:0)

这是一个jsfiddle,它有效。其余的json还有其他问题,或者你的一个对象实际上没有你想要在json feed中访问的属性。例如,clicks.zipWith(getEventsFromWeb(), (click, Events) -> Events)) 在json中没有place

trace_location