【发布时间】:2020-12-09 17:49:13
【问题描述】:
动态创建表单并在表单上调用提交,如下所示:
const mapForm = document.createElement('form');
mapForm.setAttribute('id', 'export-file');
// mapForm.setAttribute('content-type','application/x-www-form-urlencoded'); - is it needed?
mapForm.target = '_blank';
mapForm.method = 'POST';
mapForm.action = '/export';
mapForm.acceptCharset = 'UTF-8';
const postData = {
fileType: exportType,
data: someJsonArray
}
let formData = [
{
name: 'postData',
value: JSON.stringify(postData)
}
]
formData.forEach(input => {
const element = document.createElement('input');
element.type = 'hidden';
element.name = input.name;
element.value = input.value;
mapForm.appendChild(element);
});
document.body.appendChild(mapForm);
mapForm.submit();
在节点服务器上我有这些:
app.use('/export', bodyParser.urlencoded({extended:true}));
app.use('/export', exportAPI);
exportAPI.js 文件有以下内容:
我登录 req.body 时看不到任何数据。
router.post('/',(req, res) => {
try {
logger.info(req.body); -- DONT SEE ANY DATA IN THIS LINE
//....
} catch (err) {
logger.error('error in export');
//...
}
});
【问题讨论】:
-
网络标签说什么?
-
网络标签没有错误或任何东西
-
我的意思是问,它传输什么数据?
-
element.name = input.name; - 'postData' element.value = input.value; - '字符串化的 json 对象'
-
如果网络标签携带实际数据,那么服务器应该接收它
标签: javascript node.js forms