2015-12-14 18 views
5

私はnode.js 5.2.0、express 4.2.0およびformidable 1.0.17を持っています。node.jsでちょうど200レスポンスを送信する方法

テキストフィールドと写真を保存するためのシンプルなフォームを作成しました。それは正常に動作しますが、問題は、データがアップロードされた後、私は、POSTが完了していないことをコンソールで見ることができます。

それを終了するために、私はちょうどページのヘッダーと何を送りたい私のコード

form.on('end', function() { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
}); 

にこれを追加しました。ページ上に何も印刷しなくても、システムに200 okという応答が得られるようにしたい。しかし、POSTはまだ保留中です。

何も印刷せずにこれを修正するにはどうすればよいですか?どんな種類のヘッダーを送る必要がありますか?

おかげ

UPDATE

私は

form.on('end', function() { 
    res.end(); 
}); 

を行うとPOSTが正常に終了したが、私は空白のページを取得します。何故ですか?私はちょうどいくつかのものをアップロードしたい、ページに何も印刷しない、リダイレクトしない、同じページに留まる。

おかげで再び

答えて

11

代わりにこれを試してください:あなたが明示的に定義されたヘッダを引き続き使用したい場合は

res.sendStatus(200); 

それとも、私はいくつかの点でコールする必要がres.end()と信じています。 Formidable exampleでどのようにres.end()が利用されているかを見ることができます。

空白ページは、クライアント側のフォーム処理の結果である可能性があります。表示されている自動リダイレクトを回避するには、フォームのsubmitメソッドをオーバーライドし、エクスプレスサービスに手動で投稿することができます。フォームリダイレクトに関する質問には、他にもstackoverflow responsesがあります。答えはjQuery固有ですが、基本的な考え方は変わりません。

+0

ありがとうございました。なんらかの理由で私は 'res.sendStatusは関数ではありません'を得ます。また、私の更新をチェックしてください。 'res.end();'を 'form.on'または' form.parse'に追加すると、アップロード後も空白のページが表示されます。なぜ、どのようにこれを修正するか教えていただけますか? – slevin

+0

Hm。あなたは急行バージョンについて確かですか? sendStatus()を使用するための[docs](http://expressjs.com/en/api.html#res.sendStatus)へのリンクです。たぶん '.status(200).send( 'OK')'を試してみてください。空白のページに関して私の主な答えを更新しました。その点は、その点でクライアント側の可能性が高いです。 – dvlsg

+0

はい、ノードを使用しているにすぎないので、リダイレクトはデフォルトの動作です。何も変更されません。本当にありがとう、私はこれのためにAJAXを展開します。 – slevin

関連する問題