javascript - 为什么我的 catch block 没有捕获 "Cross origin requests are only supported for protocol schemes: http..."

标签 javascript jquery google-chrome jquery-post malformedurlexception

我有一个 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/

相关文章:

jquery - 需要一个支持 $.live() 和分组的 jQuery Lightbox 插件

google-chrome - Chrome 打开 iframe 中的每个网页

javascript - 覆盖 Chrome 中的 Javascript 文件

javascript - 为什么递归太多

javascript - 如何以编程方式知道哪个是最后一个具有动画的对象

javascript - .toggle() 函数不起作用

jquery - 使用 jquery 滑动对象

css - Chrome 调整大小使子元素在某些缩放级别上太大

javascript - 从 JavaScript 代码生成 SAS token ?

javascript - 循环加载函数