#javascript #jquery #node.js #ajax #express
#javascript #jquery #node.js #ajax #экспресс
Вопрос:
Я создаю простую страницу входа в систему с помощью Node.js / Express и Ajax. Ajax возвращает ошибку 404 not found при вызове, и я не могу понять, почему.
Предполагается, что вызов Ajax должен взаимодействовать с одним другим файлом, a appBackend.js который перенаправляет все вызовы ajax на соответствующие контроллеры. Ошибка возникает в строке, где я вызываю $.ajax .
Я предполагаю, что это может быть связано с тем, что у меня нет HTML-страницы по умолчанию для отображения для этого вызова api ajax, но также, похоже, не могу понять, как добавить страницу отображения по умолчанию.
Мой login.js выглядит вот так.
function validateUser() {
var userID = document.getElementById('userID').value;
var password = document.getElementById('password').value;
$.ajax({
method: "GET",
url: "/api/login",
dataType: "json",
data : {
"user_id": userID,
"password": password
},
success: function(response) {
if (response.success) {
// handles login success
} else {
}
}
});
}
Мой appBackend.js выглядит вот так.
const express = require('express');
var loginController = require("../controllers/loginController");
module.exports = function(app, dbClient) {
app.get('/api/login', function (req, res) {
loginController.validateUser(req, res, dbClient);
});
}
Мой index.js код:
const express = require('express');
const app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
var frontend = require('./routes/frontend');
var MySqlClient = require('./utils/MySqlClient');
var dbClient = new MySqlClient('localhost','root','password',
'userTable');
frontend(app, dbClient);
app.listen(3000, function () {
console.log('Listening on port 3000!')
});
Вот сообщение об ошибке:
GET http://localhost:3000/api/login?user_id=amp;password= 404 (Not Found)
send @ jquery.min.js:formatted:3917
ajax @ jquery.min.js:formatted:3679
validateUser @ login.js:23
onclick @ login.html:50
и блок кода, который выдает ошибку в ajax:
try {
r.send(i.hasContent amp;amp; i.data || null);
} catch (e) {
if (o)
throw e
}
}
Комментарии:
1. можете ли вы показать весь код express, начиная с index.js загрузка вашего appBackend.js , как-есть, где находится сервер.слушать? почему вы выполняете внедрение зависимостей, а не экспортируете экспресс-маршрутизатор?
2. Добавлено! Я думаю, я действительно должен экспортировать экспресс-маршрутизатор. Я относительно неопытен в структуре express и не знал об этом.
3. Несколько недостающих моментов — 1. Маршрут входа (должен быть POST) необходимо использовать в index.js использование app.use(appBackRoute) 2. Если dbClient вызывает проблему, определите это в else where и экспортируйте его. 3. Для получения дополнительной подсказки посмотрите на — dev.to/nurofsun /…