这里是第一个问题。
我正在创建一个将前端( Node 、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)
);
最佳答案
问题是,由于我是通过 a 发送数据的,所以它阻止了我的 ajax 请求返回的方式。
要解决这个问题,只需添加
e.preventDefault();
到jquery函数
关于javascript - Node Express 无法连接回 ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58540228/