【问题标题】:page does not render on successful AJAX post request页面不会在成功的 AJAX 发布请求上呈现
【发布时间】:2017-12-28 14:25:52
【问题描述】:

我无法将我的 js 前端链接到我的 Node/Express 后端。当我从客户端 js 向服务器发出请求时,我的请求返回成功,但我请求的页面没有呈现。

我有服务器端:

app.get('/dashboard', (req, res) => res.render('dashboard/dashboard', { updates, agendaItems }));

客户端:

$.ajax({
    type: 'GET',
    url: '/dashboard',
    data: context,
    success: function () {
        console.log('success');
    },
    error: function (jqXHR, textStatus, err) {
        console.log(textStatus);
    }
});

我没有收到任何错误,并且确实在控制台中显示了 console.log('success')。当我转到 http://localhost:27017/dashboard 或在 Postman 中发出 get 请求时,我的路由确实按预期工作。我唯一的问题是从我的客户端 js 发出路由请求。我在单击按钮时发出 ajax 请求。

【问题讨论】:

  • 我没有发布更多代码,因为它是一个相当庞大和复杂的代码库。仪表板/仪表板下有一个文件 - 就像我说的,如果我通过访问 localhost/仪表板发出相同的获取请求,页面就会呈现。后端工作得很好(我也知道在邮递员中发出请求),所以我很确定问题在于将我的前端 js 链接到我的 Express 服务器。

标签: javascript jquery node.js ajax express


【解决方案1】:

“ajax”一词指的是“异步 javascript 和 xml”(恕我直言,这是一个愚蠢的名字)。这是一个 http 请求,可以从网页中运行的代码发出。页面的代码负责处理响应——默认情况下浏览器不会对它做任何事情。

这与重定向浏览器相反,它指导浏览器发出请求并通过解析和呈现响应等方式处理响应。

如果需要,可以使用 ajax() 调用中的成功函数来解析和显示响应,但需要更多的工作,而且通常更容易组织应用程序以尽可能多地使用浏览器的默认行为。

引导浏览器重定向用户将实现这一点:

window.location = "/dashboard";

【讨论】:

  • 虽然这确实是一个简单的解决方案,但我正在寻找更多关于为什么我的 ajax 请求无法按预期工作的见解。
  • 更新了一些上下文。本质上,如果您使用 ajax,您将负责处理响应。如今,它主要用于传输数据,然后将其模板化为 html 进行显示,而不是传输 html。
  • 谢谢,您的额外信息确实澄清了一些事情。我使用了您的建议并使用 window.location 来重定向我的成功案例,因此我仍然可以使用我的请求进行一些数据库查询。它现在按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 2013-04-30
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多