Express время ожидания после запроса в chrome - PullRequest
2 голосов
/ 17 января 2020

Я новичок в разработке 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 голосов
/ 17 января 2020

вижу пару проблем. Во-первых, это не правильно:

api.use(bodyParser);

Для ответа JSON вы должны сделать следующее:

api.use(bodyParser.json());

И анализатор тела встроен в Express, так что вы не нужно вручную загружать модуль body-parser. Вы можете просто сделать это:

api.use(express.text());

Затем в коде на стороне клиента это:

console.log(req.resonseText);

написано с ошибкой и должно быть таким:

console.log(req.responseText);

И в коде на стороне клиента вы также должны проверять код состояния, возвращаемый ответом.

К вашему сведению, новый интерфейс fetch() в браузере настолько приятнее использовать, чем XMLHttpRequest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...