在codeigniter控制器中获取整个帖子体

时间:2010-12-02 20:39:27

标签: php ajax codeigniter

我正在运行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);

正如您所看到的,没有传递参数的名称。

现在我想在ipsum控制器的lorem函数中读取JSON数据。 我怎样才能做到这一点? $this->input->post();返回false :(

2 个答案:

答案 0 :(得分:7)

使用file_get_contents('php://input')

答案 1 :(得分:3)

即使您将JSON对象转换为字符串而未将字符串分配给字符串,服务器端也没有字符串标识符。

你应该做的是:

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

然后在PHP中使用:

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

要在不需要KV Pairs的情况下接收数据,您可以使用stdin。

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

甚至使用为此目的设计的变量:

$HTTP_RAW_POST_DATA