#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 и все должно работать.
Надеюсь, это поможет.