AJAX POST请求中的HTTP错误400

时间:2016-02-01 18:33:51

标签: javascript ajax node.js

我试图创建一个非常简单的程序,将一个变量发送到服务器,然后写出来。

据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错误。

原因和原因是什么?

2 个答案:

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

w3schools

它对我有用。

谢谢,我希望它能帮到你