Ajax с Node.js / Express 404

#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 /…