Ajax获取未定义的响应数据

时间:2017-12-21 16:48:09

标签: javascript jquery json ajax

我正在尝试解析由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"
    }
  ]
}

1 个答案:

答案 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);
});