2017-02-11 2 views
-1

Ich habe die folgende Situation.Ajax Call Submit Array zu Javascript

In einer Javascript (Funktion answer_submit) i rufen eine PHP-Datei durch ajax wie folgt:

$.post("/content/insert_reply.php", { 
    id: topicId, 
    answerText: answerText, 
    linkToShow: linkToShow 
}, function(data) { 
    call_next_function(data); 
}); 

In der gerufenen PHP-Datei erzeugen, i eine Matrix, die am Ende gedruckt werden soll:

$previewArrayString = "{url: '".$urlPreview["URL"]. 
"', pictureUrl: '".$urlPreview["Picture"]. 
"', title: '".$urlPreview["Title"]. 
"', description: '".substr($urlPreview["Description"], 0, 160). 
"'}"; 
echo previewArrayString; 

So die Funktion "Call_next_function" expexing die Eingabe zu einem Array. Wenn ich diese Funktion jetzt anrufe, sagt sie mir, dass die Eingabe nicht definiert ist. Ich habe versucht, alle Elemente, die ich brauche, in ein globales Array in Javascript zu setzen. Aber wenn ich das in der aufgerufenen PHP-Datei mache, sagt mir die Seite, dass das Array nicht definiert ist.

Also um eine lange Geschichte kurz zu machen, gibt es eine Möglichkeit für mich, ein Javascript-Array in der PHP zu erstellen und dann die Daten durch den Datenteil innerhalb der JS-Funktion abzurufen?

+0

, was Sie ‚insert_reply.php‘ übergeben json Daten vorhanden sind. werfen Sie einen Blick auf PHP's json_encode und json_decode – masadwin

+0

Ihr PHP-Skript erstellt kein Array, sondern ein JSON-Objekt. – Blauharley

+0

Die Eingabe von call_next_function() ist zunächst ein String, kein Array/Objekt. Sie müssen es zuerst in JSON konvertieren. –

Antwort

0

Neben anderen Vorschlag json_encode zu verwenden, stellen Sie die Content-Type-Header auf der PHP-Seite:

header('Content-Type: application/json'); 
echo json_encode($urlPreview); 

Sie können auch ein Argument $ .post zu zwingen, den erwartete Antwort Typen hinzufügen, aber Es sollte nicht notwendig sein, sobald Sie den Inhaltstyp festgelegt haben. Wie auch immer, dies ist, wie Sie es tun würde:

$.post("/content/insert_reply.php", { 
    id: topicId, 
    answerText: answerText, 
    linkToShow: linkToShow 
}, function(data) { 
    call_next_function(data); 
}, "json"); 
+0

Vielen Dank für diese Antwort. Es zeigt immer noch, dass alle Inhalte des Arrays, die ich verwenden möchte, nicht definiert sind. – Dennis

+0

versuchen Sie, die zurückgegebenen Daten in Ihrem Browser JavaScript-Konsole; vielleicht gibt dein php-code mehr als nur den json_encode wieder. – sonofagun