-1

我正在使用 jquery 和 javascript,通过 ajax 调用从 json 文件中获取所有信息。json 文件加载正常,并且完美地将点添加到地图中,但控制台中仍然存在错误。

"TypeError: obj[i].info is null"

即使每个点都正确插入并且其中包含“信息”属性,为什么 jquery 会给它一个空值?

示例代码:

$.ajax({
    url: 'http://localhost:3000/api/',
    type: 'GET',
    dataType: 'html',
}).success(function(data){
    var obj = $.parseJSON(data);
        console.log(obj);
        $.each(obj, function(i, item){
            taxiData.push(new google.maps.LatLng(obj[i].info.latitude,obj[i].info.longitude));
        });

}).error(function(data){
    console.log("Error with data: " + data);
});

我的 JSON:

[{
        "id" : 1,
        "ip" : "165.242.13.8",
        "referer" : "www.facebook.com",

        "info" : {
            "request" : "165.242.13.8",
            "ip" : "165.242.13.8",
            "country_code2" : "JP",
            "country_code3" : "JPN",
            "country_name" : "Japan",
            "continent_code" : "AS",
            "region_name" : "11",
            "city_name" : "Hiroshima",
            "postal_code" : "",
            "latitude" : 34.3963,
            "longitude" : 132.45940000000002,
            "dma_code" : null,
            "area_code" : null,
            "timezone" : "Asia/Tokyo"
        }
    }
]
4

3 回答 3

2

你用$.each错了。

each已经接受了每个条目并将其作为项目提供给您。

采用:

$.each(obj, function(i, item){
            taxiData.push(new google.maps.LatLng(item.info.latitude,item.info.longitude));
        }); //Notice I don,t access the obj Object
于 2013-07-10T09:32:08.913 回答
1

首先,您可以设置

dataType : "json"

不要做

var obj = $.parseJSON(data);

你的数据已经是一个对象

其次,这段代码有效

console.log(obj);
$.each(obj, function(i, item){
    console.log(obj[i].info.latitude);
    console.log(obj[i].info.longitude);
    console.log(item.info.latitude);
    console.log(item.info.longitude);
});

项目 === 对象 [i]

于 2013-07-10T09:45:07.753 回答
0

试试这个:

$.ajax({
    url : 'http://localhost:3000/api/',
    type : 'GET',
    dataType : 'json',
}).success(function (data) {
    var obj = data;
    console.log(obj);
    $.each(obj, function (i, item) {
        var pushString = item.info.latitude + ',' + item.info.longitude;
        var googleLatLong = new google.maps.LatLng(pushString);
        taxiData.push(googleLatLong);
    });
}).error(function (data) {
    console.log("Error with data: " + data);
});
于 2013-07-10T10:22:19.117 回答