如何使用NodeJS上的本机Ajax发送Post by Post请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用NodeJS上的本机Ajax发送Post by Post请求相关的知识,希望对你有一定的参考价值。

我试图将输入字段值作为对象POST到NodeJs控制器。这里我使用的是原生的ajax POST方法。而nodejs上的body-parser包可以访问POST请求。但是当我记录res.body时,我看到它是空的。我是Ajax和NodeJs的新手。对不起,如果我犯了任何明显的错误......

window.addEventListener("load" , () => {
let formSubmit = document.querySelector("#formSubmit");
formSubmit.addEventListener("submit", (e) => {
    e.preventDefault();
    let inputTodo = document.querySelector("#inputTodo").value;
    let todo = {item : inputTodo};
    let xhr = new XMLHttpRequest();
    xhr.open("POST" , "/todo" ,  true);
    xhr.setRequestHeader("Content-type", "application/json");
    let data = todo;
    console.log(data)
    xhr.send(data);
    location.reload();
})

});

app.post("/todo" ,urlencodedParser,  (req, res) => {
    console.log(req.body)
    data.push(req.body);
    res.json(data);
})
答案

看起来你是发送和未定义的数据对象,我在你的代码中看到你在调用.send(data)方法之前从未为数据变量赋值。所以尝试这个,应该工作

xhr.send({id: 'example_id'});
另一答案

将模板引擎形式的方法定义为POST解决了我的问题。默认情况下它是一个GET方法,但不知何故,当我们使用jQuery Ajax时,我们不需要更改方法。它工作正常。但是如果我们想使用Native Ajax,即使我们将类型定义为POST,我们也必须在表单中设置POST方法。

form(
    method="POST"
    action="/Contact"
)

以上是关于如何使用NodeJS上的本机Ajax发送Post by Post请求的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 和 nodejs 的 jQuery Ajax POST 错误

nodejs中发送https请求怎么设置请求头

如何在NodeJS服务器中解析ajax发送的数组/对象

ajax中,发送请求的类型

使用 Express 检测 NodeJS 上的 AJAX 请求

如何在 ajax 函数调用中发送 var 以发送 POST? [复制]