Push-array in array in Javascript (jQuery)
Ich habe versucht, die push () - Methode in eine Schleife zu bauen, eine Struktur wie folgt:
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]
];
Dies ist mein code:
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);
});
}
});
Jedoch die Javascript-Konsole.Protokoll für die Standorte ein leeres array zeigt.
Habe ich versucht, mit push() in vielerlei Hinsicht, aber ich kann nicht die gleiche Struktur wie locations2. Das größte problem hier ist, dass ich nicht weiß, wie viele arrays werden innerhalb der Standorte-array vor der Schleife, so kann ich nicht initialisieren, vorher.
Irgendwelche Gedanken?
- Ihre syntax sieht Recht -- sind Sie sicher, dass
data.points
enthält das array, das Sie erwarten sind? - Fügen Sie eine Fehler-callback, um Ihre ajax-call. Es kann sein, wirft ein Fehler sein, aber Sie können nicht wissen, mit diesem code.
- Sie können tun, eine schnelle dump der array-Inhalt mit alert( JSON.stringify(x) ), wobei x das array in Frage.
- Vergessen Sie nicht die
console.log
- Anweisung in der callback, weil es sonst nicht aufgefüllt werden, noch. - Der Ajax-call ist in Ordnung, ich kann Konsole.Protokoll jedes JSON-element und es funktioniert wie erwartet. Das problem ist nur das schieben der array in der gleichen Struktur wie locations2.
- Ich habe versucht, folgenden code funktioniert es einwandfrei. Ich denke, Sie können überprüfen der Struktur der Daten.Punkte $.jede([{origem_lat:"1.0", origem_lng:"1.1"}, {origem_lat:"2.0", origem_lng:"2.1"} ], function(i,item){ array_push = ["test", parseFloat(Element.origem_lat), parseFloat(Element.origem_lng), i]; Standorte.push(array_push); });
- bitte posten Sie Ihre Ergebnis json zu überprüfen!
- Wann und wie verwenden Sie
console.log
? - Dein code funktioniert gut in Chrome. Poste bitte die Daten, die Sie empfangen vom server.
- Ist das array immer leer, wenn Sie zuerst füllen Sie es? Haben Sie versucht:
locations[i] = array_push
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich herausgefunden, was das problem ist. Es hat nichts zu tun mit der push () - Methode selbst. Anscheinend ajax-Aufrufe werden nicht ausgeführt, in der Reihenfolge, (das ist der Grund, es ist asynchron). Ich fügte hinzu, async: false in der ajax-call-Optionen und jetzt funktioniert alles perfekt.
Danke an alle für den input.
async: false
Niederlagen der ganze Zweck der Verwendung von Asynchronous JavaScript und XML. Sie auf Probleme stoßen, wie die Seite hängt sich auf etc, denn Ihre Wünsche sind jetzt blockiert. Vielleicht schauen Sie in Latente Objekte api.jquery.com/category/deferred-object