2012-11-15 57 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"}) 
相關問題