我正在尝试将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正文作为响应,就像我会使用res.send(html)
,知道可能导致此问题的原因吗?
答案 0 :(得分:1)
TL; DR:它应该按照规范发送HTML 。
您希望客户端使用JSON,但是您需要一个呈现HTML的路径,这就是您获取HTML的原因。
单词 render 可能有点令人困惑:它来自你有一个模板(可能是html / pug / mustache / ...)的想法,你的服务器将转换成html 。但最后,当您呈现时服务器所做的只是发送最终HTML作为对客户端请求的响应。
因此,如果请求是针对HTML中的视图,那么这将按预期工作。但是如果你想做一个AJAX请求,那么你将会遇到这种奇怪的行为。