gpt4 book ai didi

javascript - jQuery $.post 和 $.ajax POST 请求不适用于 Express 中的 app.post() 方法

转载 作者:行者123 更新时间:2023-12-02 15:11:04 36 4
gpt4 key购买 nike

我需要将数据从 Express 应用程序的前端发送到后端,然后使用需要显示该数据的 EJS 呈现页面。

问题app.post() 方法,随后 res.render() 函数似乎没有完全执行或者当我通过 $.post$.ajax

发出“手动”POST 请求时正确

假设我通过 JQuery 发出此 POST 请求

$.post("/test", {
testData: 'Some test data.'
});

或者通过 AJAX 的 POST 请求

$.ajax({
type: 'POST',
data: {
testData: 'Some test data here.'
}),
url: '/test',
})

我配置了 app.post() 方法来处理 Express 中的该路由

app.post('/test', function(req, res) {
res.render('./test.ejs', {
testMessage: req.body.testData
});
});

变量 testData 将通过 app.post() 方法发送和接收。所以说,如果我这样做:console.log(req.body.testData),输出将是Some test data,所以那里没有问题。

问题在于 res.render() 函数,如果通过 $.post 发出 POST 请求,它根本不起作用 或通过 AJAX$.ajaxres.render() 函数不会通过 $.post$.ajax 发出的 POST 请求执行或渲染页面。

奇怪的是,如果通过表单执行相同的 POST 请求(我不想在我的应用程序中执行此操作,因为 POST 请求不应该发送收到的数据来自输入),与 Express 中完全相同相同的 app.post() 路由处理程序完美配合。

例如,使用如下所示的表单可以工作并允许 res.render() 显示页面,而 $.post() >$.ajax 方法没有。为什么会这样?

<form id="form-test" role="form" action="/test" method="post">
<input type="text" name="testData" placeholder="Test Data Goes Here" class="form-control" required>
<button class="btn" type="submit">Submit</button>
</form>

我在 StackOverflow 上发现了另一个与我的非常相似的问题,但除了表单选项(我无法使用)之外没有明确的解决方法:Express.js Won't Render in Post Action

有什么建议吗?

最佳答案

使用 Ajax 的要点是 HTTP 响应返回到 JavaScript,并且不会替换整个页面。

如果您想加载新页面,请不要使用 Ajax。使用表格。

如果您想在 JavaScript 中处理响应,那么您需要为其添加一个处理程序。

$.post("/test", {
testData: 'Some test data.'
}).done(function( data, textStatus, jqXHR ) {
// Do something smarter than
alert(data);
});

关于javascript - jQuery $.post 和 $.ajax POST 请求不适用于 Express 中的 app.post() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34801387/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com