我有类似的东西
try{
const url = 'clearlyfake';
const response = await fetch(url);
//do stuff with response
} catch(e){
console.log(e);
}
当我在这个特定实例中遇到catch时,我得到一个nginx 405,这是HTML。当我进入网络选项卡并单击“响应”时,这就是显示的内容。
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.13.5</center>
</body>
</html>
我想将其填入我创建的错误栏中。但它不是JSON,我尝试的任何JSON解析方法都会给我SyntaxError: Unexpected token < in JSON at position 0
无论如何都要捕获并显示它?或者这是一个nginx配置问题吗?
答案 0 :(得分:1)
HTML不是JSON,因此在HTML字符串上运行JSON.parse()会产生上述错误。
以下内容应该有效:
const response = await fetch(url);
var parser = new DOMParser();
var errorDoc = parse.parseFromString(response);
然后您有一个DOM节点,其中包含您的nginx错误文档的内容。因此,您可以通过调用errorDoc.getElementsByTagName(&#39; title&#39;)。innerHtml来读取它,将错误代码的名称作为字符串读出,或将整个节点附加到您的文档中。