Ich versuche, Jquery.ajax () mit PUT und DELETE-Methoden zu verwenden und einige Daten zusammen mit der Anfrage zu senden, aber auf der PHP-Seite, wenn die Anfrage gedruckt wird, kommt sie leer.
%Vor%In PHP:
%Vor%und ich bekomme ein leeres Array. Ich weiß nicht, ob es eine jQuery oder PHP-Sache ist oder einfach kann ich keine Daten senden. Ich weiß, DELETE-Methode soll verwendet werden, ohne zusätzliche Daten zu senden, aber hier wird jede Ajax-Anfrage an das gleiche Skript gesendet.
Um den Inhalt des HTTP-Anfragekörpers von einer PUT-Anfrage in PHP abzurufen, können Sie keinen Superglobal wie $_POST
oder $_GET
oder $_REQUEST
verwenden, weil ...
Stattdessen müssen Sie den Anfragetext manuell von STDIN
abrufen oder den php://input
-Stream verwenden.
$_put = file_get_contents('php://input');
Das $_GET
superglobal wird im Falle einer PUT- oder DELETE-Anfrage weiterhin ausgefüllt. Wenn Sie auf diese Werte zugreifen müssen, können Sie dies auf normale Weise tun. Mir ist nicht bekannt, wie jquery die Variablen mit einer DELETE-Anfrage versendet. Wenn also $_GET
nicht gefüllt ist, können Sie stattdessen die Variable $_SERVER['QUERY_STRING']
manuell parsen oder einen benutzerdefinierten "action" -Parameter verwenden, wie von @ShankarSangoli vorgeschlagen um veraltete Browser zu berücksichtigen, die JavaScript nicht verwenden können, um eine DELETE-Anfrage an erster Stelle zu senden.
Ich denke, DELETE
type wird nicht vom gesamten Browser unterstützt. Ich würde einen zusätzlichen Parameter sagen action: delete
. Probieren Sie es aus.
Es könnte ein Browser-Problem sein, wie es in der jQuery-Dokumentation heißt:
Die Art der Anfrage ("POST" oder "GET"), Standard ist "GET". Hinweis: Andere HTTP-Anforderungsmethoden wie PUT und DELETE können hier ebenfalls verwendet werden, sie werden jedoch nicht von allen Browsern unterstützt.