我试图创建一个非常简单的程序,将一个变量发送到服务器,然后写出来。
据Opera称,它在Display()
结束时收到HTTP 400(错误请求)。
.jade文件
button(type='button', onclick='Display()') Display data
#modify
p Lorem ipsum Display
script
include main.js
main.js
function Display(){
var xhttp = new XMLHttpRequest();
var parameter = { "Name": "Katamori" };
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("modify").innerHTML = xhttp.responseText;
}
};
xhttp.open("POST", "displayer.js", true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(parameter);
};
displayer.js
function (req, res) {
if (req.method == 'POST') {
var jsonString = '';
req.on('data', function (data) {
jsonString += data;
});
req.on('end', function () {
console.log(JSON.parse(jsonString));
});
req.on('error', function () {
console.log("ERROR!");
});
}
}
我尝试将parameter
从JSON更改为简单文本(也使用RequestHeader),在这种情况下,我遇到了HTTP 404错误。
原因和原因是什么?
答案 0 :(得分:4)
您没有发送JSON,将数据序列化为JSON并发送
xhttp.send(JSON.stringify(parameter));
答案 1 :(得分:1)
或者你甚至可以用另一种方式发送它,如下所示:
function display(){
var http = new XMLHttpRequest();
var params = "name=Katamori";
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
document.getElementById("modify").innerHTML = http.responseText;
}
};
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.open("POST", "/", true);
http.send(params);
}
服务器端代码
app.post("/", function(req, res){
var jsonString = '';
req.on('data', function (data) {
jsonString += data;
});
req.on('end', function () {
console.log(jsonString); // name=Katamori
});
});
它对我有用。
谢谢,我希望它能帮到你