发布JSON Formdata的正确方法

时间:2015-01-21 10:00:05

标签: jquery html node.js express

我想知道提交表单的正确方法是什么时候服务器端需要JSON。服务器使用express框架在node.js中实现。要解析请求体,使用bodyparser.json()中间件。

目前,我使用JavaScript拦截提交,然后创建formdata的对象,然后使用ajax进行POST。

我对此实现的问题是POST的响应是用户应该重定向到的整个页面。我想用替换响应的内容替换页面的HTML内容,但这对我来说似乎很脏,并且还保持浏览器URL不变。

TL; DR:如何提交表单以便可以通过Express中的req.body.myObj访问该表单,并将浏览器重定向到响应中?

感谢您的想法。

1 个答案:

答案 0 :(得分:0)

表单没有受支持的方式来提交JSON格式的请求。 (有关不受支持的方式,请参阅W3C HTML JSON form submission)。

唯一的方法是使用Ajax。然后,您可以根据响应(正常的Ajax)修改DOM,或者通过设置location(并在会话中传递数据/通过URL / etc(这是一个hack))来发出GET请求。 / p>

最佳方法通常是保留期望HTTP API的JSON请求的端点,并在您希望处理常规表单提交时编写期望表单url编码或多部分数据的端点。

// Don't do this
app.use(bodyParser.json()); // for parsing application/json

// Do this most of the time
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

// Do this if you have file inputs
app.use(multer()); // for parsing multipart/form-data

来自the express docs的代码。