NodeJS/Expressjsサーバーに次のコードを記述しました。
app.post('/settings', function(req, res){
var myData = {
a: req.param('a')
,b: req.param('b')
,c: req.param('c')
,d: req.param('d')
}
var outputFilename = 'config.json';
fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
if(err) {
console.log(err);
} else {
console.log("Config file as been overwriten");
}
});
});
これにより、送信されたフォームデータを取得し、JSONファイルに書き込むことができます。
これは完全に機能します。しかし、クライアントは何らかの投稿状態のままで、最終的にタイムアウトします。したがって、何らかの成功状態または成功ヘッダーをクライアントに返送する必要があります。
どうすればいいですか?
前もって感謝します!
Express Update 2015:
代わりにこれを使用してください:
res.sendStatus(200)
これは廃止されました:
res.send(200)
res.json()
ヘルパーを介してjsonを送信できることを追加したかっただけです。
_res.json({ok:true}); // status 200 is default
_
_res.json(500, {error:"internal server error"}); // status 500
_
更新2015:
res.json(status, obj)
はres.status(status).json(obj)
を支持して廃止されました
_res.status(500).json({error: "Internal server error"});
_
Express 4では、次のことを行う必要があります。
res.status(200).json({status:"ok"})
非推奨の代わりに:
res.json(200,{status:"ok"})
Jup、答えを返送する必要があります。最も簡単なのは
res.send(200);
writeFile
のコールバックハンドラー内。
200はHTTPステータスコードであるため、障害が発生した場合は変更することもできます。
if (err) {
res.send(500);
} else {
res.send(200);
}