2016-12-04 19 views
0

Ich habe einige JS, die eine POST-Anfrage an einen PHP-Controller sendet. Der JS-Code lautet wie folgt:Zugriff auf JSON-Objekte in PHP-Array

$.ajax({ 
    url: 'map-controller/coordcontroller.php', 
    data: {myData:JSON.stringify(myArray)}, 
    type: 'post', 
    success: function(output) { 
    console.log(output); 
    } 
}); 

Auf der Serverseite, $ _POST [ "myData"] ist wie folgt:

[{"lat":36.8867497490586,"lng":-76.3046246767044},{"lat":36.88671756964517,"lng":-76.30381464958191}] 

Wie ich es verstehe, liegt meine Daten in einem einzigen Element Array ($ _POST ["myData"]), enthält eine Reihe von Objekten, die durch Kommata getrennt sind. Ich habe versucht, json_decode(), aber ich habe das Gefühl, es funktioniert nicht, weil mein Datenobjekt tatsächlich ein Array ist anstelle von tatsächlichen JSON-Daten.

Meine Frage: Wie kann ich auf jedes Objekt innerhalb einer Schleife zugreifen? Oder ist meine Implementierung fehlerhaft und sollte ich mein Javascript ändern, um die Daten anders zu senden?

+0

'json_decode()' würde ein anderes Array zurückgeben, das aus dem json-Objekt erstellt wurde, Sie können es einfach mit 'foreach' durchlaufen, gibt es sonst noch etwas zur Frage? – georoot

+0

Ich habe Echo anstelle von var_dump verwendet, um den Erfolg von json_decode() zu testen. Ich habe jetzt entdeckt, dass der json_decode() funktioniert wie erwartet und ich versuchte es falsch auszugeben. Vielen Dank. – FantasticSponge

Antwort

0
var_dump (json_decode($_POST["myData"])); 

Ergebnisse in:

array(2) { 
    [0]=> 
    object(stdClass)#1 (2) { 
    ["lat"]=> 
    float(36.886809817261) 
    ["lng"]=> 
    float(-76.304672956467) 
    } 
    [1]=> 
    object(stdClass)#2 (2) { 
    ["lat"]=> 
    float(36.886146919127) 
    ["lng"]=> 
    float(-76.305075287819) 
    } 
} 

Mein Fehler war, anstelle von var_dump Echo des decodierten Objekt zu überprüfen.