【问题标题】:Retrieve traditional html form data in Node server在 Node 服务器中检索传统的 html 表单数据
【发布时间】: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


【解决方案1】:

表单操作指向“/export”,但您的节点中间件位于“/datacloud/orgbm/export”上。所以它基本上节点没有得到正确的请求。

您可以将表单操作更改为“/datacloud/orgbm/export”吗?

【讨论】:

  • 您在router.post('/',(req, res) => { 上看到任何记录器吗?
  • 我在请求中看到了标题和所有其他内容,除了我在表单中传递的 valeu
猜你喜欢
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多