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 に答える