【问题标题】:get req.body.task is undefined after click on checkbox单击复选框后获取 req.body.task 未定义
【发布时间】:2019-02-24 16:18:30
【问题描述】:

当我点击复选框然后 req.body.task return undefined.

<input type="checkbox" name="task" autocomplete="off" checked="" onchange="onToDochange({{id}})">

执行更改功能,返回选中或未选中复选框的 id。

function onToDochange(id) {
    // console.log(id);
    fetch('/checkbox', {
       method: 'POST',
       body: JSON.stringify({global: id})
     })
    .then(res=>res.json())
    .then(res => console.log(res));
};

路由

app.post('/checkbox', (req, res) => {
    console.log(req.body.task);
});

使用 expressJS nodeJs 模板引擎把手

【问题讨论】:

  • 在服务器上你想访问taskid?由于您只是从客户端发送 id,这就是您在服务器上可以使用的。尝试检查服务器上的req.body 及其真正包含的内容。
  • 首先,我想访问 ID,我只是在上面实现循环。每个复选框都有自己的 id,当我检查它时返回空的 {} 大括号。

标签: javascript node.js express body-parser


【解决方案1】:

您发送 id 的方式不正确。

您需要做的是绑定您的 onclick 事件处理函数,并使用该事件获取事件处理函数中您需要的任何 id 或值。此外,您将 id 设置为一个名为 global 的键,但您正在使用不正确的 req.body.task 访问。

Workig 代码在codesandbox 中提供

查看以下代码以更好地了解如何在路由器中发送 id 和访问 id。

<input type="checkbox" name="task" autocomplete="off" checked="" onclick='onToDochange(this)' value="task" id="2">


function onToDochange(event) {
    // console.log(event.id);
    fetch('/checkbox', {
       method: 'POST',
       headers: {
         'Accept': 'application/json',
         'Content-Type': 'application/json'
       },
       body: JSON.stringify({"id": event.id})
     })
    .then(res=>res.json())
    .then(res => console.log(res));
};

路由

app.post('/checkbox', (req, res) => {
    console.log(req.body.id);
});

【讨论】:

  • 仍然从 req.body.task 获得未定义。实际上我需要在路由页面中获取 id。你对此有什么想法吗??
  • @VarinderSohal 嘿,我犯了一个错误。您可以尝试使用我更新的代码,它现在应该可以工作了。如果您仍有问题,请告诉我
  • 我正在使用 javascript 和 event.target 用于 jQuery
  • 好的,看看这个codesandbox.io/s/500r5q9ryn。仅使用 javascript 就可以正常工作,我可以读取 id
  • 我不知道您只使用 javascript。我现在更新了我的答案。在代码沙箱中它工作正常。我更新的答案也应该在你的机器上工作。如果它不起作用,那么你一定是在其他地方做错了什么
猜你喜欢
  • 2022-01-09
  • 2021-10-12
  • 2017-06-27
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-28
  • 2018-12-28
相关资源
最近更新 更多