javascript - res.render() 和 res.redirect() 的行为类似于 res.send()

标签 javascript html node.js ajax fetch

我正在尝试使用 fetch 进行简单的发布请求:

const headers = new Headers({
  Accept: 'application/json',
  'Content-Type': 'application/json',
});

fetch('/checkout/billing', {
        headers,
        body,
        credentials: 'include',
        method: 'POST',
      })
      .catch(console.error);

服务器端端点如下所示:

if (!validateResult) {
        res.redirect('/checkout/shipping');
      } else {
        view.render('checkout/billing')
      }

因此,当我使用常规 HTML 表单提交时,它工作正常(重定向或渲染),但是当我使用 fetch 而不是重定向或渲染时,我收到 HTML 正文作为响应,就像 if我会使用 res.send(html),知道什么会导致这个问题吗?

最佳答案

TL;DR:它应该按照规范向您发送 HTML。

<小时/>

您期望来自客户端的 JSON,但您要求呈现 HTML 的路径,这就是您获得 HTML 的原因。

渲染这个词可能有点令人困惑:它来自于这样的想法:您有一个模板(可能是 html/pug/mustache/...),您的服务器会将其转换为 html 。但最终,当您渲染时,服务器所做的只是发送最终的 HTML 作为对客户端发出的请求的响应。

因此,如果请求是针对 HTML 中的 View ,则这将按预期工作。但是如果您想要执行 AJAX 请求,那么您将会遇到这种奇怪的行为。

关于javascript - res.render() 和 res.redirect() 的行为类似于 res.send(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45041265/

相关文章:

html - 更改我的 HTML Eventbrite 按钮的颜色和大小

javascript - 谷歌地图和谷歌地图API给出了不同的纬度和经度

javascript - JS/jQuery 返回相关 TD 的 TH,可能吗?

javascript - Chrome 中选择模糊()的解决方案?

html - 使图像位置与背景图像和元素图像相同

html - 在 div 中垂直居中一段文本

javascript - Safari (Mac OS) 上的 jQuery Smooth Scroll 问题

javascript - 重试 Mocha 失败的测试

mysql - 如何将 Azure 应用服务连接到 Azure Database for MySQL 灵活服务器

javascript - 奇怪的 node.js 错误 : TypeError: Object #<Object> has no method 'on'