Node Express не может подключиться к Ajax - PullRequest
1 голос
/ 24 октября 2019

первый вопрос здесь.

Я создаю API, который соединяет фронт (node, express и ajax) с API Python swagger. Проблема в том, что, хотя я могу отправлять информацию в API через ajax -> node -> api, когда API отвечает, он останавливается в узле (api -> node - / -> ajax).

Кодis:

Узел (экспресс) маршрутизатор с постом в python API:

const express = require('express');
const router = express.Router();
const fs = require('fs')
const request = require('request');

router.post('/', (req, res) => {
    data = req.body

    request.post('http://localhost:8080/passengers', {
            json: data
        }, (error, res2, body) => {
        if (!error && res2.statusCode === 200) {
            console.log(body)
            res.send(body)
        }
    })


});

module.exports = router;

Я могу подтвердить, что "console.log (body)" работает

Сейчас, это часть ajax.

$(() => {

    $('#calculateResult').on('submit', () => {
        $.ajax({
            url: './passengers',
            method: 'POST',
            data: $('#calculateResult').serialize(),     
            //async: false,    
            success: function (response) {
                document.getElementById("output").innerHTML = '<span>'+response+'</span>'
            },
            error: function (err) {
                console.log(err);
            }
        })
        .done((response)=>document.getElementById("output").innerHTML = '<span>'+response+'</span>')
    })
})

Я пробовал с флагом асинхронности, но, хотя он показывает результат, страница обновляется, и результат теряется

Наконец, этосерверная часть приложения, на случай, если какая-то конфигурация может быть причиной проблемы.

const path = require('path'); //Lo utilizamos para rutas porteables
const app = express();
const bodyParser = require("body-parser");
const PORT = process.env.PORT || 3000;

//Añadimos jquery al proyecto
app.use('/jquery', express.static(__dirname + '/node_modules/jquery/dist/'));
//Lo añadimos para obtener datos del formulario en un formato util de manera inmediata
app.use(bodyParser.urlencoded({ extended: false }));
//app.use(bodyParser.json()); //Esto lo usariamos para parsear a json
//Añadimos nuestra direccion de la api a la hoja de rutas
app.use('/passengers', require('./routes/api/passengers'));
//Especificamos la carga de recursos estaticos
app.use(bodyParser.urlencoded({ extended: false }))
app.use(express.static(path.join(__dirname, "public")));

//Empezamos a escuchar en el puerto indicado
app.listen(PORT, () =>
    console.log('Server is running on PORT:', PORT)
);

1 Ответ

0 голосов
/ 24 октября 2019

Дело в том, что, поскольку я отправлял данные через них, это заблокировало путь для моего прохождения ajax-петиции.

Чтобы решить эту проблему, это было так же просто, как добавить

e.preventDefault();

к функции jquery

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