【问题标题】:Node Express can't connect back to ajaxNode Express 无法连接回 ajax
【发布时间】:2020-02-20 17:26:11
【问题描述】:

这里是第一个问题。

我正在创建一个将前端(节点、express 和 ajax)与 Python swagger api 连接起来的 api。问题是虽然我可以通过ajax -> node -> api向api发送信息,但是当api响应时,它会停在node(api -> node -/-> ajax)。

代码是:

Node(express) 路由器与 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)
);

【问题讨论】:

  • “页面刷新,结果丢失”——那么肯定有什么东西在刷新页面。没有足够的客户端代码来说明什么。
  • 如果您在 UI 中有一个表单和一个提交按钮,请确保您 return false 以确保该表单不会得到 POSTed,这将使页面刷新!

标签: javascript node.js ajax api express


【解决方案1】:

问题是,由于我通过 a 发送数据,它阻止了我的 ajax 请求返回。

要解决它,就像添加一样简单

e.preventDefault();

到jquery函数

【讨论】:

    猜你喜欢
    • 2019-07-17
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2019-09-04
    相关资源
    最近更新 更多