2016-08-25 3 views
2

Ich bin sehr verwirrt. Ich fand eine Reihe von Posts mit sehr ähnlichen Fragen entweder unbeantwortet oder die ganze Antwort sagt, es sollte funktionieren. oder sagt, es hat funktioniert.JQuery AJAX zu PHP bekommt undefinierten Index

Ich übergab ein Schlüssel-Wert-Paar-Objekt von Jquery zu PHP. und warne es wieder erfolgreich wieder, aber wenn ich auf die PHP-Seite gehe. Es besagt, dass die Daten null oder nicht definiert sind.

unten ist mein jquery

$('#test').click(function(){ 
    var obj= { 
     'key': 'value', 
    }; 
    $.ajax({ 
     url: "../folder/file.php", 
     type: "POST", 
     data: { 
      'obj' : obj 
     }, 
     dataType: "JSON", 
     success:function(data){ 
      alert(data); 
     } 

    }); 
}); 

unter meinem php

$data = $_POST['obj']; // this is line 1 
echo json_encode($data); // this is line 2 

Mit dem obigen Code, wenn ich Testknopf klicken, werde ich value Benachrichtigung erhalten. aber wenn ich auf die php-seite gehe, nachdem ich den testknopf geklickt habe. Die Seite sagt Notice: Undefined index: obj on line 1, and null on line 2.

wenn ich die PHP-Seite nach unten ändern. Ich werde there is nothing, wenn ich auf die PHP-Seite gehen, aber meine ursprüngliche Seite wird alarmiert value

if(!empty($_POST['obj'])){ 
    $data = $_POST['obj']; 
    echo json_encode($data); 
}else{ 
    echo 'there is nothing'; 
} 

Warum?

Ich werde den Wert, den ich eingegeben habe, alarmiert. Es muss also bedeuten, dass die Daten durch und zurück gingen. aber die PHP-Seite sagt, sonst

+1

Variablen bleiben zwischen verschiedenen Ausführungen des Skripts außer für Sitzungsvariablen nicht bestehen. – Barmar

+0

das bedeutet, dass die Daten vorhanden waren, als ich auf meine Test-Schaltfläche geklickt habe, aber als ich die PHP-Seite geladen habe, ging es weg? – codenoob

Antwort

3

Wenn Sie die AJAX-Newsletter Anfrage, die den POST Parameter in der data: Option sendet, und das Skript kann in $_POST darauf zugreifen.

Wenn Sie direkt vom Browser zur URL gehen, sendet das keine POST Parameter, also $_POST ist leer.

Jedes Mal, wenn Sie ein PHP-Skript ausführen, startet es einen neuen Prozess. In einem vorherigen Skript festgelegte Variablen werden nicht beibehalten. Die Ausnahme ist $_SESSION, wenn Sie in den Skripten session_start() verwendet haben.

+0

ok, meine Frage war eine Unterfrage eines größeren Problems. Ich habe ursprünglich versucht, ein Objekt mit vielen Objekten darin zu übergeben. ist das möglich über jquery ajax. Ich sehe das Jquery-Dokument sagt, es kann nur einfaches Objekt tun. – codenoob

+1

Ja, Sie können. Das Objekt wird URL-codiert und PHP dekodiert es automatisch. – Barmar

+0

Wie kann ich meine PHP-Seite während derselben AJAX-Anfrage öffnen? so kann ich mein neues Objekt tatsächlich var_dump und testen, ob die Dinge funktionieren. – codenoob

2

Sie verstehen nicht, wie HTTP funktioniert, HTTP staatenlos ist, wenn Sie ein Wert gespeichert werden möchten, verwenden Sie PHP session_start() und den Wert von Posten zu $_SESSION

Verwandte Themen