2017-07-07 9 views
0

Ich benutze Ajax, um eine Anfrage an eine PHP-Seite zu senden, die einen Cookie setzt und eine Nachricht mit der Echo-Funktion zurück an den Browser sendet. Aber das Problem ist, dass PHP den Cookie erfolgreich setzt, aber ich bekomme die Nachricht nicht im Echo. Ich habe die Konsole das XMLHTTPRequest-Objekt protokolliert, um dies zu bestätigen.Ajax und PHP - unerwartetes Verhalten

Hier ist der PHP-Code:

<?php header("Access-Control-Allow-Origin: *"); 
    session_start(); 
    // echo "true"; - If I put the echo here , I get the response. 
    if(isset($_POST['init'])){ 
     $x00 = universe::decode($_POST['init']);// Just a static function call of object Universe. 
     $_SESSION['id'] = $x00['id']; 
     echo "true"; // This echo does not appear in the response. 
    } 
    ?> 

Die response ist jedoch nicht undefiniert, es ist eine leere Zeichenfolge. Schau dir das Bild an. Chrome Dev Tools.

+0

ersetzen 'echo" true ";' mit 'echo json_encode ('true);' –

+1

Nicht genug Info. Ich glaube, dass Sie JSON-formatierte Antwort erwarten. Aber trotzdem wissen wir nicht, was Sie drucken. – tilz0R

+0

Ihre if-Anweisung wird nicht ausgeführt ... der init-Parameter wird nicht mit http-Anfrage gesendet Ajax-Code –

Antwort

0

Das Problem gefunden, danke für die Hilfe, Leute.

Was ich intime getan habe war, die JSON-Daten zu stringifizieren und schickte es als eine normale Post-Anfrage und erwartet, dass es funktioniert, aber es aus irgendeinem Grund nicht.

Ich schrieb eine Funktion, die eine Post-Anfrage an den Server sendet.

ajax.send(x); //Send is a function of the object ajax , x is the payload. 

param = {"id": "qbcd"} //json data 
param=JSON.stringify(ajax.param); // converted to string. 
ajax.send("init="+param); // This will send a post request to the server. 

Ich dachte, es wird die Post-Anforderung mit init ist ein String und dann kann ich die Zeichenfolge mit $ _POST [ ‚init‘] und json_decode auf sie aus zugreifen senden. Aber aus irgendeinem Grund enthält die Payload nur den stringyfied json (überprüft mit Chrome Dev Tools), also müssen wir nun mit $ _POST [0] darauf zugreifen, d. H. Auf das erste Element des Post-Arrays zugreifen und es dann analysieren. Post ist jetzt kein assoziatives Array (idk why).

Vielen Dank für Ihre Kommentare :) Liebe stackoverflow.