0

我对 ajax 比较陌生,并且已经查看了大量其他线程,但找不到答案。

我正在尝试读取 .post 调用的结果,但没有成功。

这是代码:

$.post( http://www.mapquest.com/directions/v1/routematrix?key=...,//I have my actual key where the three dots are
    {locations:[{latLng:{lat:54.0484068,lng:-2.7990345}},{latLng:{lat:53.9593817,lng:-1.0814175}},{latLng:{lat:53.9593817,lng:-1.0514175}},{latLng:{lat:53.9593817,lng:-1.0114175}}]},
    function (data, status, xhr) {
        console.log(typeof(data)); //this shows: object
        console.log(data); //this shows: [object object]
        console.log(data[0]); //this shows: undefined
        console.log(data.length); //this shows: undefined
        console.log(status); //this shows: success          
    }, 
    'json'
);

我期待的输出看起来像这样:

{
   allToAll: false,
   distance: [
      0,
      25.685,
      107.846,
      78.452
   ],
   time: [
      0,
      2260,
      7253,
      5930
   ],
   locations: [
      "Lancaster, England",
      "Liverpool, England",
      "Chester, England",
      "Stoke-on-Trent, England"
   ],
   info: {
      ...
   }
}         

知道我做错了什么吗?

4

2 回答 2

0

您的问题在于您尝试记录数据的方式。您已经有一个 javascript 对象data,因此您可以直接访问属性:

console.log(typeof(data)); // object - correct
console.log(data);         // [object object]  - correct
console.log(data[0]);      // undefined - correct; this is not an array
console.log(data.length);  // undefined - correct; not an array, so no length
console.log(status);       // success          

尝试直接记录属性。例如:

console.log(data.locations[0]); // Should be 'Lancaster, England'
console.log(data.distance[1];   // should be 25.685
console.log(data.time[3]);      // should be 5930  
于 2013-07-07T21:39:41.247 回答
0

如果有人感兴趣,我通过使用 get 方法(而不是 post)并在 URL 中添加 JSON 来规避这个问题:

var matrixUrl3 = 'http://www.mapquestapi.com/directions/v1/routematrix?key=YOUR_KEY_HERE&json={locations:[{latLng:{lat:54.0484068,lng:-2.7990345}},{latLng:{lat:53.9593817,lng:-1.0814175}},{latLng:{lat:53.9593817,lng:-1.0514175}},{latLng:{lat:53.9593817,lng:-1.0114175}}]}';

$.get(newURL,function(data, status, xhr) {                         
            //console here
        }, 'json');

不知道为什么 post 方法不起作用,尝试按照此处的说明对我的 JSON 进行字符串化:http: //www.json.org/js.html 但也没有帮助。无论如何,规避上述问题就像一个魅力!

于 2013-07-08T20:13:38.150 回答