AJAX POST 请求中的 HTTP 错误 400

HTTP error 400 in AJAX POST request

本文关键字:HTTP 错误 POST 请求 AJAX      更新时间:2023-09-26

我正在尝试制作一个非常简单的程序,将变量发送到服务器,然后写出来。

根据Opera的说法,它在Display()结束时得到一个HTTP 400(错误请求)。

.翡翠文件

button(type='button', onclick='Display()') Display data
#modify
    p Lorem ipsum Display
script
    include main.js

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

显示器.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错误。

原因是什么,正确的解决方案是什么?

您不会发送 JSON,请将数据序列化为 JSON 并发送

xhttp.send(JSON.stringify(parameter));

或者您甚至可以以其他方式发送它,如下所示:

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

W3学校

它对我有用。

谢谢,希望对您有所帮助