我發佈這個題目關於標題建議的問題。我看到有關空請求組織的其他幾個問題,但沒有一個對我有幫助。希望如果我發佈自己的代碼,有人可以給我一個很好的提示。節點js與CORS和JSON空請求正文
基本上我有一個客戶端使用JavaScript來使CORS HTTPRequests到Node.js服務器。通常這些HTTPRequests是JSON對象的帖子。
這裏是客戶端的示例代碼。
username = document.getElementById("username").value;
password = document.getElementById("password").value;
var str = '{"name":"'+username+'","pass":"'+password+'"}';
var req = new XMLHttpRequest();
req.open("POST","http://xxxx:8099/register",true)
req.setRequestHeader("Content-type", "application/json");
req.onreadystatechange = function()
{
//irrelevant
}
req.send(str);
}
這裏是服務器的代碼。
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
extended: true
}));
// parse application/json
app.use(bodyParser.json());
app.listen(8099);
app.post("/register", function (req, res) {
console.log(req.body); // populated!
console.log(req.body.name);
res.send(200, req.body);
});
現在這些都是我一直得到的結果:
如果我設置請求內容類型爲application/JSON,然後在服務器上,我得到一個空的請求主體。
如果我將請求Content-type設置爲application/x-www-form-urlencoded,那麼我得到一個填充體,例如{'{「name」:「usernamtest」,「pass」:「123」 }':''}。
但是,如果我嘗試打印req.body.name,我將得到未定義的意味着body-parser沒有正確地將正文解析爲JSON。
我將如何解決這個問題?我只想結束示例中這些屬性的JSON對象。
對於那些閱讀本文,我感謝您的時間。 補全, 裏卡多費雷拉達席爾瓦
你確定代碼不*工作嗎?試了一下,我得到了預期的結果(打印到控制檯名稱)。你是否正確地從輸入中獲取數據?您可以嘗試清理您的XHR代碼:https://jsbin.com/revovemepu/edit?js – adrianp
是的,我確定客戶端與我的教授已經完成的測試服務器完全匹配,但它不起作用與我的。如果我按照原樣運行代碼,當我打印req.body時,我得到了{},這是一個空的主體。 –
http:// xxxx:8099/register中的** xxxx **是什麼?您是否正在提出跨域請求?您服務嵌入客戶端JS的HTML頁面的域是否與您製作XHR的域不同? – adrianp