我正在运行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 :(
答案 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