JavaScript网络错误为字符串

cho*_*wey 5 javascript ajax xmlhttprequest

当XMLHttpRequest出现错误时,如何获取Javascript中的实际错误文本?它会输出到控制台,但似乎无法以字符串形式获取。

例:

var req = new XMLHttpRequest();
req.open('get', 'http://nowhere/', true);
req.send();
Run Code Online (Sandbox Code Playgroud)

这会在控制台中导致错误:

GET http://nowhere/ net::ERR_NAME_NOT_RESOLVED
Run Code Online (Sandbox Code Playgroud)

如何使用Javascript获得此信息?


编辑:澄清一下,我对网络错误感兴趣,即当由于其他原因没有响应时。一个示例是无法解析主机名的情况。另一个示例是拒绝连接时。另一个示例是当出现CORS错误时。

Dev*_*ert -1

要从服务器获取响应,请使用 XMLHttpRequest 对象的responseText 或responseXML 属性。

alert(req.responseText);
Run Code Online (Sandbox Code Playgroud)

responseText - 获取字符串形式的响应数据。

responseXML - 获取 XML 数据形式的响应数据。

要检测 ajax 请求是否有错误,请检查 req.readyState 是否等于 4,如果 req.status 小于 200,则通过req.statusText获取错误。

  • 这对解决网络错误没有帮助,例如当主机名未解析时,或者存在 cors 错误等。 (2认同)