簡體   English   中英

服務器上的 POST 請求正文為空

[英]POST request body is empty on server

我正在嘗試使用 XMLHttpRequest 從客戶端 javascript 發出 AJAX 請求。 以下是它的代碼:

document.getElementById('myform').onsubmit=function(){
    var http = new XMLHttpRequest();
    var text = document.getElementById('myinput').value;
    console.log(text);
    http.onreadystatechange = function(){
        if(http.readyState === 4 && http.status === 200){
            location.reload();
        }
    };
    http.open('POST','/todo',true);
    http.setRequestHeader("Content-Type", "application/json");
    var obj = {
        item:text
    };
    http.send(JSON.stringify(obj));
}

這工作正常,沒有任何錯誤。 但是,在服務器端,當我嘗試將請求正文記錄到控制台時,它顯示為空的 object。 有人可以幫我弄這個嗎? 以下是處理 post 請求的服務器端代碼:

app.post('/todo',urlencodedParser, function(req,res){
    console.log(req.body); // This logs an empty object to the console!
    newItem = Todo(req.body);
    newItem.save(function(err,data){
        if(err) throw err;
        res.json(data);
    });
});

JSON 編碼和 URL 編碼是不同的。

如果您希望使用 JSON 編碼發送數據,那么您必須使用適當的中間件接收它:

const bodyParser = require('body-parser');

app.post('/todo', bodyParser.json(), function(req,res){
    console.log(req.body); // This logs an empty object to the console!
    newItem = Todo(req.body);
    newItem.save(function(err,data){
        if(err) throw err;
        res.json(data);
    });
});

它很可能與 jQuery 一起使用,因為 urlencoding 是$.post的默認行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM