我正在尝试解析由ajax方法返回的Json字符串,但是在警告lat,long值时显示未定义,但是当我打印控制台日志时,数据在那里正确显示。任何人都可以在这里帮助解析如何解析GET响应数据
$.ajax({
type: 'GET',
url: '/api/v1.0/tasks/'+document.getElementById("autocomplete").value,
dataType: 'json',
data: { 'value' : $(this).val() },
success : function(data){
var lat,long;
data=JSON.stringify(data)
for (var x = 0; x < data.length; x++) {
lat = data[x].lat;
alert(lat);
long = data[x].longi;
alert (long);
}
} });
API响应:
{
"task": [
{
"lat": 41.21555555555555,
"longi": -111.99694444444445,
"markerText": " Ogden UT 84401"
}
]
}
答案 0 :(得分:2)
首先删除对JSON.stringify()
的调用。它没有意义,并且会导致问题,因为您当前正在尝试遍历JSON字符串中的字符。其次,您需要访问data.task
,而不仅仅是data
。试试这个:
// AJAX response
var data = {
"task": [{
"lat": 41.21555555555555,
"longi": -111.99694444444445,
"markerText": " Ogden UT 84401"
}]
}
// in the AJAX success handler:
var lat, long;
data.task.forEach(function(task) {
lat = task.lat;
long = task.longi;
console.log(lat, long);
});