如何从 nodejs/Express 向浏览器发送成功状态?

我在 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 文件。

这样很好。但是客户端仍然处于某种发布状态,并最终超时。所以我需要将某种成功状态或成功头发送回客户端。

我该怎么做?

先谢谢你!

107414 次浏览

Jup,你需要发回一个回复,最简单的就是

res.send(200);

writeFile的回调处理程序中。

200是一个 HTTP状态码,所以你甚至可以在失败的情况下改变它:

if (err) {
res.send(500);
} else {
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"});

2015年最新情况:

用这个代替:

res.sendStatus(200)

这种说法遭到了反对:

res.send(200)

在特快4中,你应该做:

res.status(200).json({status:"ok"})

而不是被贬低的:

res.json(200,{status:"ok"})