我有一个 JavaScript 脚本,它使用 jquery post
命令登录服务器并获取 token 。我将代码包装在 try
block 中,并使用 catch
block ,如下所示:
catch (error)
{
alert(error.message);
}
我的代码运行良好,但为了彻底测试它,我故意更改了协议(protocol),使网址看起来像这样:
"htt://some.domain:8080/jsonrpc"
我的代码没有捕获错误并显示警报。相反,Chrome 控制台显示以下错误:
XMLHttpRequest cannot load htt://some.domain:8080/jsonrpc. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
我希望出现某种格式错误的 url 异常,而不是控制台中的错误。
其他故意错误(例如不正确的密码)会导致捕获异常。
谢谢
最佳答案
因为Ajax是异步的。错误发生在 try/catch block 之外。
可以通过状态更改为 0
在 XMLHttpRequest 中检测到此类错误。 (此状态代码还涵盖了一些其他错误状态,因此您无法准确)。
可以传递给 jQuery ajax 的 error
处理程序将在状态为 0 时触发。
关于javascript - 为什么我的 catch block 没有捕获 "Cross origin requests are only supported for protocol schemes: http...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922263/