如何使用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 错误