如何在NodeJS上使用本机Ajax通过Post请求发送对象

时间:2019-02-14 15:38:07

标签: node.js ajax

我正在尝试将输入字段值作为对象发布到NodeJs控制器。在这里,我正在使用本地ajax POST方法。然后在nodejs上使用body-parser包来访问POST请求。但是当我登录res.body时,我看到它是空的。我是Ajax和NodeJ的新手。抱歉,如果我犯了任何明显的错误...

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);
})

2 个答案:

答案 0 :(得分:0)

就像您正在发送和未定义的数据对象一样,对于我在代码中看到的内容,在调用.send(data)方法之前,您从未为数据变量分配任何值。所以尝试一下,应该可以

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

答案 1 :(得分:0)

以POST形式以模板引擎形式定义方法为我解决了这个问题。默认情况下,它是一个GET方法,但是以某种方式使用jQuery Ajax时,我们不需要更改该方法。而且效果很好。但是,如果要使用本机Ajax,则即使将类型定义为POST,也必须以表单的形式设置POST方法。

node_modules