js 有办法获取跨域抛出的异常吗?

2014-11-14 16:45:32 +08:00
 RangerWolf
使用Jquery的Ajax在百度搜索结果页面发出request:
$.ajax({
url: "http://www.baidu.com/link?url=8U2HyXKgEQPW2mVhf5M7XRn2zWeXRmMf5jvCmcmJPg335RTCCgvMc4HKn8ze6Awwk7S0uvzkLMMGUphSkwqAKq",
})


希望通过解析抛出的异常获得百度搜索结果真实的url. 抛出的异常如下:
“XMLHttpRequest cannot load http://www.iteye.com/problems/12212&_=1415954040556. No 'Access-Control-Allow-Origin' 。。。”

可以看到真实的地址 http://www.iteye.com/problems/。。。 已经出来了~
但是我就是没有办法获得这个异常。

试过jq的error 也试过window.onerror 都没办法抓到这个异常~

google一圈也不知道原因~ 求助
4868 次点击
所在节点    问与答
7 条回复
chemzqm
2014-11-14 16:49:07 +08:00
try catch 可以捕获,这个不是异步操作后出现的异常,但是一般不用管,开发时很容易看到
RangerWolf
2014-11-14 16:51:16 +08:00
@chemzqm try-catch 也搞不定。。。 我把整个ajax请求的代码都包到try-catch 里面也没效果
try{ ajax_code ... } catch(err) { console.log(err) }
这样 没错吧?
chemzqm
2014-11-14 17:40:33 +08:00
是我说错了,它是异步的

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
console.log(xhr.readyState);
}
xhr.addEventListener('error', function(e) {
console.log(e)
}, false)
xhr.open('GET', 'http://www.baidu.com', true);
xhr.send();
error时间触发了,但是chrome上测试 e 没有 message 属性
binux
2014-11-14 17:44:52 +08:00
不能
RangerWolf
2014-11-14 21:58:25 +08:00
@chemzqm 可能是因为同步异步的原因了吧~ 我再想想其他获得百度url真实地址的方法~ 多谢
renminghao
2015-12-21 20:57:55 +08:00
亲 你现在找到获取这种异常的办法了么?现在我也遇到这个问题了 想请教下
RangerWolf
2015-12-22 16:04:45 +08:00
没有。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/146536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX