在Chrome中快速发布请求超时

时间:2020-01-17 19:08:32

标签: javascript node.js express

我是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");
});

1 个答案:

答案 0 :(得分:0)

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

app.get("/callback", (request, response, next) => {
  passport.authenticate("auth0", (auth0Error, token) => {
    if (!token){
      // HERE, token is false
    }
    ...
  })(request, response, next);
});

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

api.use(bodyParser);

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

api.use(bodyParser.json());

然后,在您的客户端代码中,该操作:

api.use(express.text());

拼写错误,应该是这样:

console.log(req.resonseText);

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

仅供参考,浏览器中的新console.log(req.responseText); 界面比fetch()更好用。