2015-12-14 84 views
5

我有node.js 5.2.0,express 4.2.0和强大的1.0.17。如何在node.js中发送一个200响应

我创建了一个简单的窗体来保存文本框和照片。它工作正常,但问题是,在数据上传后,我可以在控制台中看到POST未完成,它仍处于待处理状态。

为了完成它,我已将此添加到我的代码

form.on('end', function() { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
}); 

我只是想发送头和没有在页面上。我希望系统获得200 ok响应,而不必在页面上打印任何内容。但是POST仍在等待中。

如何解决这个问题,而不必打印任何东西?我必须发送什么样的标题?

感谢

UPDATE

如果我做

form.on('end', function() { 
    res.end(); 
}); 

的POST正常结束,但我得到一个空白页。这是为什么?我只想上传一些东西,不打印页面上的任何内容,不重定向,停留在同一页面。

再次感谢

回答

11

试试这个:

res.sendStatus(200); 

或者,如果你想继续使用明确定义的头,我相信res.end()需要在某些时候被调用。您可以在Formidable example中看到如何使用res.end()

空白页最有可能是客户端表单处理的结果。您可能想要覆盖表单的提交方法,并手动发布到您的快速服务,以防止您看到的自动重定向。这里有一些其他stackoverflow responses涉及形式重定向的问题。答案是jQuery特有的,但基本的想法将保持不变。

+0

谢谢。出于某种原因,我得到'res.sendStatus不是函数'。另请检查我的更新。如果我在'form.on'或'form.parse'中添加'res.end();',我上传后仍然会出现空白页。你能告诉我为什么以及如何解决这个问题吗? – slevin

+0

嗯。你确定快递版吗?这里是使用'sendStatus()'的[docs](http://expressjs.com/en/api.html#res.sendStatus)的链接。也许试试'.status(200).send('OK')'?我还更新了关于空白页面的主要答案 - 这一问题很可能是客户端。 – dvlsg

+0

是的,重定向是默认行为,仅仅因为我使用的节点不会改变任何东西。非常感谢,我将为此部署AJAX。 – slevin