4

Node.jsで簡単なフォームを作っています。他のすべては正しく機能しているように見えますが、ポスト リクエスト データを受け取るはずの関数が呼び出されません。関連するコード スニペットは次のとおりです。

if (request.method == 'POST') {
    var body = '';
    console.log(request.body);
    request.on('data', function (chunk) {
        console.log("got the post request data"); //nothing logged to console
        body += chunk;
    });
    request.on('end', onRequestEnd(body, response));
}

関数 onRequestEnd は呼び出されますが、後でパラメーター本体に空の文字列しかないとコードが壊れます。キーワード「データ」は正しいですか?

コードは次の回答から変更されました: How do you extract POST data in Node.js? . 必要に応じてさらに投稿します。

4

2 に答える 2

1

多くの欲求不満の後、私は自分で問題を解決しました!

私は行を変更しました:

request.on('end', onRequestEnd(body, response));

に:

request.on('end', function() {
        onRequestEnd(body, response);
    });

コールバックと関係がありました。なぜこれが機能し、もう一方が機能しないのか正確にはわかりません。これが私の気持ちです: http://www.masti-xpress.com/images/Story-of-Every-Programmer.jpg

于 2012-11-19T19:13:22.330 に答える
0

これで問題をどのように解決したかを共有します。しかし、私はそれについて別の見解を持っていたので、それも共有します。私が欲しかったのは、私の「ビュー」にこのようなものを持たせることでした。

app('/urlToView', function(req, response){
    request.on('end', function() {
        var post = **request.data;** //sanitize data
        resolver.renderTemplateOr404('start.html', post, request, response);
    });
}

request.dataは、ここで注目すべき重要なことです。request.on('end'...)しかし、私は自分の見解に「ない」方法をまだ解決していません。

console.log() の理由は、このすべての作業を行う関数からのコールバックをどのように処理するかです。

サーバーを起動したときに、ビューに表示される前にリクエストをハイジャックします

self.preProcess(self, request, response);

preProcess: function onRequest(app, request, response){ 
     processor.preRequest(request);
}

最後に、私が行う preRequest() 関数を int します

if (request.method === 'POST') {
    var postdata = "";
    request.on('data', function(postdataChunk){
         postdata += postdataChunk;
    });
    request.on('end', function(){
        _transformRequest(request, _transformPostdata(postdata)); //this is to set the data on the request
    });
}

console.log(postdataChunk);すべてのコールバックが適切に処理されるため、ここにa を追加しても問題ありません。

また、これは私が尋ねるのは非常にばかげているかもしれませんが、console.log(); を知っていますか? ブラウザではなく端末ウィンドウに出力しますか?

これはあなたにとって正確な答えではないかもしれませんが、これが少し役立つことを願っています.

于 2012-11-16T10:34:51.063 に答える