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).
Anlagendaten ausdrucken – peter
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
Ich habe JSON_UNESCAPED_SLASHES verwendet, da das Array einige verpfuschte Links enthält mit Backslashes. Bearbeitete den Hauptpfosten für Clarifaitons. – arch1ve