2016-04-11 9 views
0

Ich habe folgende AJAX-Funktion in jQuery:Erstellen von JS Array von JSON

$.post('../../afisare.php', {"fac_name" : facility_name }, function(response) { 
      alert(response); 
}); 

$.ajax({ 
    url: "../../afisare.php", 
    dataType: "JSON", 
    success: function(json){ 
     console.log(json); 
    } 
}); 

Und die folgende Codierung in einer PHP-Datei:

$facility_name = $_POST['fac_name']; 

$facility_data = getFacilities($facility_name); 
$facility_data2 = json_encode($facility_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); 
print($facility_data2); 

Das Array in der PHP-Datei ($ facility_data2) druckt genau so, wie es sein sollte.

Meine Frage ist: Wie erstelle ich ein Javascript-Array in der Succes-Funktion, die die genauen Elemente als JSON enthält?

Bearbeiten: hinzugefügt die $ .post-Funktion auch; Die Warnung druckt das JSON wie es sollte, aber die console.log(json) druckt ein leeres Array. Zur Verdeutlichung: Der JSON wird basierend auf der Funktion getFacilities generiert.

Später bearbeiten: für jeden, der das gleiche Problem hat wie ich (besten Rat: Lesen Sie die Dokumentation gründlich) habe, hier ist die Funktion, die funktioniert:

$.post('../../afisare.php', {"fac_name" : facility_name }, function(json) { 
    data = JSON.parse(json); 
    console.log(data[0].facility_name); 
}); 

Das Problem mit meinem frühen Versuch war, dass ich habe die Callback-Funktion in der $ .post-Funktion nicht wie gewünscht verwendet (zB ist diese Funktion direkt mit den Variablen verbunden, die ich in die php-Datei poste und daher nicht von außerhalb dieser Funktion gelesen werden kann).

+3

Anlagendaten ausdrucken – peter

+0

Der Funktionsparameter 'json' enthält alles, was Sie aus Ihrem PHP-Skript heraus wiedergeben. Ich bin ziemlich sicher, dass Sie das 'JSON_PRETTY_PRINT' nicht wollen und ziemlich sicher, dass Sie nicht die' JSON_UNESCAPED_SLASHES' Parameter in dieser 'json_encode()' Funktion entweder brauchen. Da Sie einen 'dataType:" JSON "' haben, wird der JSON-Parameter automatisch in einen JavaScript-Datentyp konvertiert, der dem von PHP gesendeten Objekt oder Array entspricht. – RiggsFolly

+0

Ich habe JSON_UNESCAPED_SLASHES verwendet, da das Array einige verpfuschte Links enthält mit Backslashes. Bearbeitete den Hauptpfosten für Clarifaitons. – arch1ve

Antwort

1
var result = []; 

for(var i in json) 
    result.push([i, json [i]]); 
+0

'result' gibt immer noch ein leeres Array zurück. – arch1ve

+0

https://jsfiddle.net/chaoskreator/3jy7v6xz/ – chaoskreator

0
$.post('../../afisare.php', {"fac_name" : facility_name }, function(json) { 
    data = JSON.parse(json); 
    console.log(data[0].facility_name); 
}); 

Das Problem mit meinem frühen Versuch war, dass ich die Callback-Funktion in der $ .post Funktion nicht wurde mit wie ich (zB diese Funktion direkt auf die Variablen verknüpft ist, ich bin Entsendung haben sollte in die php-Datei und kann daher nicht von außerhalb dieser Funktion gelesen werden).