【问题标题】:get whole post body within codeigniter controller在 codeigniter 控制器中获取整个帖子正文
【发布时间】:2010-12-02 20:39:26
【问题描述】:

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

如您所见,传递的参数没有名称。

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

【问题讨论】:

  • 我认为我来晚了,但内容类型应该是 application/json(是的,我知道它不会有任何影响)

标签: php ajax codeigniter


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    即使您将 JSON 对象转换为字符串,您也没有为字符串分配键,所以服务器端没有您的字符串的标识符。

    你应该做的是:

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

    然后在 PHP 中使用:

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

    我想要在不需要 KV 对的情况下接收数据,您可以使用标准输入。

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

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

    $HTTP_RAW_POST_DATA

    【讨论】:

    • 感谢您的回复!我知道我可以那样做。我想知道是否有另一种方法,没有标识符。可能以某种方式接收 http 请求正文。
    • 是的,当然有,fopen("php://stdin","r") 读取原始输入,但这不是前进的方向。
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 2023-04-07
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多