我正在使用jquery和javascript,使用ajax调用从json文件中获取所有信息。 json文件加载正常,并将点完美地添加到地图中,但控制台中仍然存在错误。
"TypeError: obj[i].info is null"
即使每个点都正确插入并且其中包含“info”属性,为什么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"
}
}
]
答案 0 :(得分: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
答案 1 :(得分: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);
});
item === obj [i]
答案 2 :(得分: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);
});