2012-11-15 35 views
34

我已经写了下面的一段代码在我的NodeJS/Expressjs服务器:如何从nodejs/express向浏览器发送成功状态?

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

这个效果很好。但客户仍处于某种发布状态,并最终超时。所以我需要将某种成功状态或成功标题发送回客户端。

我该怎么做?

预先感谢您!

回答

74

快速更新2015年:

用这个代替:

res.sendStatus(200) 

这已被弃用:

res.send(200) 
+0

即时获取ServerResponse没有方法sendStatus – naoru

+1

您确定您已经安装了Express并且它是Express v4吗? – ac360

+1

是的!将日期添加到答案中。那里有很多过时的答案。特别是对于快速变化的堆栈。我们应该至少有好几个月:) –

8

杰普,你需要一个答案发送回,最简单的是

res.send(200); 

里面的writeFile回调处理程序。

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

if (err) { 
    res.send(500); 
} else { 
    res.send(200); 
} 
+0

是这正是缺少的东西! – tUrG0n

+0

工作就像一个魅力。非常感谢你! – jansmolders86

19

只是想补充一点,你可以通过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"}); 
+0

好啊,我不知道,谢谢! – jansmolders86

+0

这很酷!谢谢! – MadPhysicist

7

在快递4,你应该做的:

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

代替已弃用的:

res.json(200,{status:"ok"}) 
相关问题