- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将数据从 Express 应用程序的前端发送到后端,然后使用需要显示该数据的 EJS 呈现页面。
问题是 app.post()
方法,随后 res.render()
函数似乎没有完全执行或者当我通过 $.post
或 $.ajax
假设我通过 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 发出
或通过 AJAXPOST
请求,它根本不起作用$.ajax
。 res.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/
我是一名优秀的程序员,十分优秀!