Как я могу отправить статус успеха в браузер из 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.

это отлично работает. Но клиент остается в каком-то состоянии публикации и в конечном итоге тайм-аут. Поэтому мне нужно отправить клиенту какое-то состояние успеха или заголовок успеха.

Как мне это сделать?

спасибо заранее!

4 ответов


Экспресс-Обновление 2015:

используйте этот код:

res.sendStatus(200)

Это был осужден:

res.send(200)  

просто хотел добавить, что вы можете отправить json через res.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"});

Jup, вам нужно отправить ответ назад, самый простой будет

res.send(200);

внутри обработчика обратного вызова writeFile.

200-это код состояния HTTP, поэтому вы можете даже изменить это в случае сбоя:

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

в express 4 Вы должны сделать:

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

вместо устаревших:

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