4 Stimmen

Holen Sie sich ganze Post Körper innerhalb Codeigniter Controller

Ich laufe XMLHttpRequest Anfrage wie diese:

var data = JSON.stringify({
    name : "123",
    id : 12
});

window.console.log("Submitting: " + data);
var req = new XMLHttpRequest();
req.open('POST', "http://localhost/index.php/lorem/ipsum", true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.onreadystatechange = function() {
    if (  req.readyState==4) {
        window.console.log( "Sent back: " + req.responseText );
    }
}
req.send(data);

wie Sie sehen können, gibt es keinen Namen für den übergebenen Parameter.

jetzt möchte ich diese JSON-Daten innerhalb von ipsum Funktion von lorem Controller. Wie kann ich das tun? $this->input->post(); gibt false zurück :(

7voto

Morgan Cheng Punkte 69962

Utilice file_get_contents('php://input')

3voto

RobertPitt Punkte 55763

Obwohl Ihr Drehen eines JSON-Objekts in Zeichenfolge Ihre nicht zuweisen einen Schlüssel für die Zeichenfolge, was so Server-Seite nicht einen Bezeichner für Ihre Zeichenfolge haben.

Was Sie tun sollten, ist:

req.send("json=" + data);

dann in PHP verwenden:

$this->input->post("json");

Um Daten ohne KV-Paare zu empfangen, können Sie stdin verwenden, nehme ich an.

http://php.net/manual/en/wrappers.php.php

oder sogar eine für diesen Zweck vorgesehene Variable verwenden:

$HTTP_RAW_POST_DATA

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X