1

当我通过node.js填充一些数据来进行 POST 查询时Kohana,我总是在$this->request->post()空数组中获取,但是当我通过浏览器本机JavaScriptajax 调用进行查询时 - 它会获取正确的数据 - 我已经发送了。

Node.js 代码(我正在使用请求库) - 不工作:

request.post(
    'http://someurl',
    { id : 'ididididid' },
    function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log('returned BODY:', body);
        }
    }
);

Node.js 正在获取响应(statusCode == 200),但它是空数组

jQuery 代码 - 运行良好:

$.ajax({
    type: 'POST',
    url : 'http://someurl',
    dataType : 'JSON',
    data : {
        id : 'idididid'
    },
    done : function(data) {
        console.log(data.responseText);    
    }
});

Kohana 代码(控制器内部):

$data = $this->request->post();
echo json_encode($data);

我在这里做错了什么?

4

1 回答 1

0

在 Kohana 中,您不使用$this->request->post全局$_POST变量,它用于内部(子)请求。

在您的情况下,您只需执行以下操作:

$this->response->body(json_encode($_POST));

确保您始终将响应分配给主体,因为这是在 Kohana 中执行此操作的正确方法

如果你愿意:

Request::factory('/someurl')->post(array('id' => 'idididid'))->execute();

然后你$this->request->post会返回数据

于 2013-01-23T23:05:58.307 回答