我是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/