2017-03-06 2 views
1

Ich benutze die jquery $ .post-Funktion, um auf meinem lokalen Server zu posten. Es postet korrekt und ich sehe den Wert innerhalb des Feldes $ _POST. Aber wenn ich denselben Code online auf einer Website hochlade, wird $ _POST leer zurückgegeben. Irgendwie wird der 'Name' var nicht einmal gesendet? Was vermisse ich?

Heres die jquery/javascript Seite:

$("#box").keyup(function(event) { 
 
    //Simple test to see if it gets to the 
 
    //file. 
 
    $.post("test-file.php", { name:"John"},  function() { 
 
     alert("success"); 
 
    }) 
 
    .done(function(data) { 
 
     //Checking the respones from the file 
 
     alert("second success: "+data); 
 
    }) 
 
    .fail(function() { 
 
     alert("error"); 
 
    }) 
 
    .always(function() { 
 
     alert("finished"); 
 
    }); 
 

 

 

 
});

Heres, was der Test-file.php Datei wird:

<?php 
 

 
//Checking to see if I get to the 
 
//file 
 
echo "TEST:"; 
 

 
//Checking to see whats inside the post 
 
var_dump($_POST); 
 

 

 

 
?>

+0

Sie überprüfen den Pfad zum Test-file.php müssen möglicherweise verdoppeln – Cruiser

+0

Verwenden Sie immer 'F12' im Browser dev-Konsole zu öffnen und dann Registerkarte Nachschlagen Netzwerk zu sehen, was wirklich geht weiter wenn der Ajay gemacht wird. – JustOnUnderMillions

+0

@Cruiser Ich bekomme jedoch eine Antwort von test-file.php. Das bedeutet, dass es erreicht wird. – Zapp

Antwort

1

Sie Müssen Sie die URL Ihrer PHP-Seite schreiben.

Wenn es www.my_url.com/test-file.php Sie es so schreiben müssen:

$.post("www.my_url.com/test-file.php", { name:"John"},  function() { 
    alert("success"); 
}) ..... 
+0

Beide Dateien befinden sich im selben Verzeichnis, und die Testdatei.php resoniert. Die Nachricht zeigt, aber das $ _POST-Array ist leer. – Zapp

+0

@ Zapp nicht sicher, aber ich glaube nicht, dass 'var_dump' in Produktionsumgebungen funktioniert, da diese Umgebungen normalerweise Debugging-Techniken deaktivieren (hängt von Ihrer env-Konfiguration ab) – niceman

+0

@Zapp Sie haben beide Erfolgsalarme auch? Testen Sie auch ohne die ".php" am Ende. Denn mit der .php benutzt der Browser manchmal sowieso GET und du verlierst den POST. – Cyril

0

Es sieht aus wie Sie JSON-Daten zu PHP Mitteilung verfassen. Stellen Sie sicher, dass Sie den Content-Type-Header überprüfen, um sicher zu sein.

Im Allgemeinen wird die Variable $ _POST nur ausgefüllt, wenn Sie application/x-www-form-urlencoded posten. Prüfen Sie, ob die unten für Sie arbeitet:

$rest_json = file_get_contents("php://input"); 
$_POST = json_decode($rest_json, true); 
+0

Danke für die Hilfe. Ich habe das versucht, aber es hat auch nicht funktioniert. Es hat einen Nullfehler zurückgegeben. Ich habe die $ _POST in $ _GET geändert und das hat funktioniert. Dies ist Code, der vor 3 Wochen funktioniert hat, aber plötzlich, mit allen Änderungen, hat es aufgehört zu arbeiten. Der $ _POST funktioniert immer noch lokal, aber online musste ich $ _GET verwenden. Sehr eigenartig. – Zapp