我正在尝试使用serialize
提交表单,但在表达中我无法获取数据。
jquery的:
function submitSettingsCustom()
{
$('#reception-source-custom-form, expedition-source-custom-form').on("submit", function(event)
{
alert("works");
event.preventDefault();
var form = $(this).serialize();
$.post("/add-reception-source-customField/"+ JSON.stringify(form), function(data){
});
});
}
路线:
routes.post('/add-reception-source-customField/:form', settings.storeCustomField);
在表达中我试图console.log
数组:
console.log(req.params.form);
返回:
"name=Emp1&type=submitReceptionSourceCustomFields"
但是如何访问每个值?
谢谢
答案 0 :(得分:2)
您应该在帖子请求中将您的表单数据添加为正文,而不是在url
中同样serialize
将导致urlEncoded数据,而serializeArray
将导致对象数组。
function submitSettingsCustom()
{
$('#reception-source-custom-form, expedition-source-custom-form').on("submit", function(event)
{
alert("works");
event.preventDefault();
var form = $(this).serializeArray();
$.post("/add-reception-source-customField/" , { formData : JSON.stringify(form)}, function(data){
});
});
}
然后在表达中使用req.body.formData
routes.post('/add-reception-source-customField/', function(req , res){
console.log(req.body.formData);
});
答案 1 :(得分:0)
对于HTTP POST请求,表单数据应该在请求正文中而不是URL中提交。
使用jQuery,可以通过将序列化表单数据作为第二个参数传递给$.post()来完成。
$.post('/reception-source', $(this).serialize(), function (data) {
/* lines of code */
})
在Express中,您需要由Expressjs团队维护的body-parser middleware。此中间件将使表单数据在req.body
...
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
app.use(bodyParser.urlencoded({ extended: true })
app.post('/reception-source', function (req, res) {
console.log(req.body)
/* lines of code */
})