Как мне вызвать вызов запроса get ajax со стороны клиента, используя Node / Express?

#javascript #jquery #ajax #express

#javascript #jquery #ajax #экспресс

Вопрос:

У меня есть маршрут перетасовки файлов.js, где я определяю это:

 router.get("/shuffle?jokers=false", function (req, res) {
   cards['a','b','c'];
   let shuffledCards =  _.shuffle(cards);

    res.status(200).send(shuffledCards);

});
  

У меня есть index.js где я определяю:

 app.get("/v1/game", require("./routes/shuffleRoute.js"));
  

У меня есть game.html где onload Мне нужно выполнить ajax-запрос, чтобы получить перетасованные карты. Как мне это сделать?

выполнение этого

   $.get( "/v1/game", function(res) {
        console.log(res);
    });
  

не работает.

Я получаю эту ошибку:

 jquery-2.2.4.min.js:4 GET localhost:8080/v1/game 500 (Internal Server Error) –
  

Я использовал morgan для регистрации данных на сервере, что было сделано неправильно.

Однако, комментируя это, я получаю эту ошибку.

 jquery-2.2.4.min.js:4 GET http://localhost:8080/v1/game 404 (Not Found)
  

Комментарии:

1. Какая-либо ошибка в консоли браузера?

2. Что означает «не работает»? «не работает» не является приемлемым описанием проблемы. Вы обязаны самостоятельно выполнить базовое устранение неполадок и сообщить, что вы узнали при этом. Какую ошибку или ответ вы получаете от своего вызова ajax. Базовое устранение неполадок проверит ошибки в вашем вызове ajax и сообщит нам, что он говорит.

3. jquery-2.2.4.min.js:4 GET localhost:8080 / v1 / game 500 (внутренняя ошибка сервера)

4. Итак, вызов ajax работает, проблема в сервере. Проверьте ошибки в консоли сервера.

5. Добавьте эту информацию в свой вопрос. Очевидно, что на вашем сервере происходит что-то другое, что вы нам не показали, поскольку ни один код, который вы нам показали, не создает ошибку 500.

Ответ №1:

Может быть неправильно, но я вижу здесь проблему с маршрутами.

Когда вы определяете маршруты для экспресс-использования app.use

var myRoute = require('PathToYourRouteFile');

app.use("/v1/game", myRoute);

В файле маршрута. Я предполагаю, что вы используете экспресс-маршрутизатор, вам нужно определить что-то вроде этого

youRuoterName.get('/', function(req, res, next) { })

Этот запрос будет выполнен успешно, когда вы перейдете к localhost/v1/game .

Если вам нужен другой, просто сделайте

youRuoterName.get('/shuffle', function(req, res, next) { })

Который будет успешным, когда вы перейдете к /v1/game/shuffle .

В вашем примере я вижу только один маршрут /v1/game/shuffle , который явно не соответствует /v1/game , и я даже не уверен, что остальной код работает так, как ожидалось.

Поэтому, пожалуйста, внимательно прочитайте документы http://expressjs.com/en/4x/api.html#router.route и все должно работать.

Надеюсь, это поможет.