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

标签 javascript jquery ajax node.js express

我需要将数据从 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/

相关文章:

javascript - 回调窗口对象初始化(在页面中动态包含 iframe)

jquery - 如何使用 ajax 从 python wsgi 应用程序读取 JSON 对象

javascript - 为什么 jQueryUI 无法运行?

jquery - 如果屏幕窄于 1024px,则隐藏 DIV

php - 通过 ajax 将表格行作为 HTML 代码返回并添加到表格中

javascript - 有没有一种非常简单的方法可以使用 jQuery/AJAX 更新 Perl Dancer 中的页面?

javascript - 如何在 JavaScript 中同步 API 响应?

javascript - 如何让我的菜单逻辑更简洁?

javascript - AngularJS 中的二维数组 $Index

jquery - 运行 jquery 时出现可点击链接的问题