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

问题描述 投票:0回答:2

我试图将输入字段值作为对象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);
})
node.js ajax
2个回答
0
投票

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

xhr.send({id: 'example_id'});

0
投票

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

form(
    method="POST"
    action="/Contact"
)
© www.soinside.com 2019 - 2024. All rights reserved.