我是API开发的新手,正在尝试创建发布请求并将数据发送到API,但它总是在chrome中超时。我得到的错误是net :: ERR_EMPTY_RESPONSE。
这是我试图发送信息的js。在另一个称为addToCart()的方法中调用该方法,在该方法中,我将购物车作为参数传递给该方法。

function sendToAPI(cart) {
  var req = new XMLHttpRequest();
  req.open('POST', '/add');
  req.setRequestHeader('Content-Type', 'application/json');
  req.send(JSON.stringify({cart : cart}));
  req.addEventListener('load', () => {
    console.log(req.resonseText);
  })
  req.addEventListener('error', () => {
    console.log('There was an error');
    console.log(error);
  });

}


这是我创建API的地方:

const express = require("express");
const bodyParser = require("body-parser");

const api = express();

api.use(express.static(__dirname + '/public'));
api.use(bodyParser);

api.listen(3000, function() {
  console.log("Server is running on port 3000");
});


api.post('/add', function(req, res) {
  console.log(req.body);
  res.send("It works");
});

最佳答案

我看到几个问题。首先,这是不正确的:

api.use(bodyParser);


对于JSON响应,您可以这样做:

api.use(bodyParser.json());


而且,body解析器内置于Express中,因此您无需手动加载body-parser模块。您可以这样做:

api.use(express.text());




然后,在您的客户端代码中,这是:

console.log(req.resonseText);


拼写错误,应为:

console.log(req.responseText);




并且,在您的客户端代码中,您还应该检查响应返回的状态代码。

仅供参考,浏览器中新的fetch()界面比XMLHttpRequest更好用。

关于javascript - 在Chrome中快速发布请求超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59793511/

10-12 07:21
查看更多