получить все тело сообщения в контроллере codeigniter - PullRequest
4 голосов
/ 02 декабря 2010

Я выполняю XMLHttpRequest запрос следующим образом:

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);

, как вы можете видеть, что нет имени для передаваемого параметра.

Теперь я хочу прочитать эти данные JSON внутриipsum функция lorem контроллера.Как я могу это сделать?$this->input->post(); возвращает ложь: (

Ответы [ 2 ]

7 голосов
/ 15 марта 2012

Использование file_get_contents('php://input')

3 голосов
/ 02 декабря 2010

даже если вы превращаете объект JSON в строку и не назначаете ключ для строки, то на стороне сервера нет идентификатора для вашей строки.

Что вы должны сделать:

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

затем в PHP используйте:

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

Для получения данных без необходимости KV Pairs вы можете использовать стандартный ввод:

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

или даже используя переменную, предназначенную для этой цели:

$HTTP_RAW_POST_DATA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...