2012-12-12 11 views
7

私は、次のような構造を構築するためのループ上のプッシュ()メソッドを取得しようとしてきた:プッシュ配列(jQueryの)

var locations2 = [ 
    ['User', position.coords.latitude, position.coords.longitude, 1], 
    ['Bondi Beach', -33.890542, 151.274856, 2], 
    ['Coogee Beach', -33.923036, 151.259052, 3], 
    ['Cronulla Beach', -34.028249, 151.157507, 4], 
    ['Manly Beach', -33.80010128657071, 151.28747820854187, 5], 
    ['Maroubra Beach', -33.950198, 151.259302, 6] 
]; 

は、これは私のコードです:

var locations = []; 

$.ajax({ 
    type: "POST", 
    url: "/ajax/map.php", 
    data: "name=test", 
    dataType: "json", 
    cache: false, 
    success: function(data){ 
     $.each(data.points, function(i,item){ 
      array_push = ["test", parseFloat(item.origem_lat), parseFloat(item.origem_lng), i]; 
      locations.push(array_push); 
     });    
    } 
}); 

ただし、場所のJavascript console.logに空の配列が表示されます。

私はpush()をさまざまな方法で使用しようとしましたが、locations2と同じ構造を取得できません。ここでの最大の問題は、ループの前に配列の中にいくつの配列があるのか​​わからないため、あらかじめ初期化することができないことです。

どのような考えですか?

+1

あなたの構文は正しいようです - 'data.points'にはあなたが期待している配列が含まれていますか? – McGarnagle

+1

ajax呼び出しにエラーコールバックを追加します。エラーが発生する可能性がありますが、このコードではわからないことがあります。 –

+0

alert(JSON.stringify(x))を使用して、配列の内容をクイックダンプすることができます。ここで、xは問題の配列です。 – RonaldBarzell

答えて

4

私は問題が何かを理解しました。それはpush()メソッド自体とは何の関係もありません。明らかにajax呼び出しは順番に実行されません(非同期の理由です)。私はasyncを追加しました:偽をajaxコールオプションに追加しました。

入力いただきありがとうございます。

+4

'async:false'は、**非同期JavaScriptとXMLを使用する目的をすべて無効にします**。リクエストがブロックされているため、ページがハングするなどの問題が発生します。たぶん、** Deferred Objects **を見てください。http://api.jquery.com/category/deferred-object/ – Aesthete

+0

+1延期について言及してください。その学習曲線の少しがあることを言及する価値が、彼らはあまりにも悪くはない、これらのような状況に適しています。 – lbstr

関連する問題