Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Используйте это вместо:

res.sendStatus(200)

Это устарело:

res.send(200)  

Ответ 2

Просто хотел добавить, что вы можете отправить json через помощник res.json().

res.json({ok:true}); // status 200 is default

res.json(500, {error:"internal server error"}); // status 500

Забастовкa >

Обновление 2015:

res.json(status, obj) устарел в пользу res.status(status).json(obj)

res.status(500).json({error: "Internal server error"});

Ответ 3

В экспресс-4 вы должны сделать:

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

вместо устаревшего:

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

Ответ 4

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

res.send(200);

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

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

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