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 ではこれが正しい方法であるため、常にレスポンスを body に割り当てるようにしてください。

あなたがしたい場合:

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

次に$this->request->post、データを返します

于 2013-01-23T23:05:58.307 に答える