jQuery.getJSON的错误处理问题

net205 2010-05-28 12:43:58
如下代码所示,http://localhost/abc.aspx页面并不存在,如果按照 下面的代码去执行,可以进行错误处理。
但是如果把后面一行://var url = "http://localhost/abc.aspx?jsoncallback=?";的注释去掉,即支持jsonp,那就不能进行错误处理了。

请问有何办法??? 谢谢!!!


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
</head>

<body>
<script>
$(function(){
var url = "http://localhost/abc.aspx"; //这个url地址是不存在的

//var url = "http://localhost/abc.aspx?jsoncallback=?";
$.ajaxSetup({
error:function(x,e){
alert("error");
return false;
}
});


$.getJSON(url , function(data){
alert(data);
});
});
</script>
</body>
</html>
...全文
2825 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Krollxu 2011-10-19
  • 打赏
  • 举报
回复
呵!遇到同样的问题了,不知道大虾们有没有什么好方法解决!
looklove 2011-09-21
  • 打赏
  • 举报
回复
改用$.ajax试试吧 判断有没有200
net205 2010-06-09
  • 打赏
  • 举报
回复
失望.....
net205 2010-06-02
  • 打赏
  • 举报
回复
帖子咋越来载没人观注呢??
money8899 2010-05-31
  • 打赏
  • 举报
回复
up
net205 2010-05-31
  • 打赏
  • 举报
回复
刚才又测试了一下:
1、
使用var url = "http://localhost/abc.aspx?jsoncallback=?";格式,请求的是这样的地址:
http://localhost/abc.aspx?....&jsoncallback=jsonp1275275068754&_=1275275069984
返回的是:
jsonp1275275068754({error:false,....})

但如果把localhost这个站点停掉,却捕获不到异常错误。

2、
如果使用var url = "http://localhost/abc.aspx"; 格式,再把localhost站点停掉,能捕获错误执行到alert("error");

3、
如果指定jsonp函数名,如:var url = "http://localhost/abc.aspx?jsoncallback=jsoncallbackfunction";,停掉localhost站点,能捕获错误执行到alert("error");

但不停掉localhost站点,按理应该要返回正常的结果,但在在firebug上看到的是403 Forbidden错误。
net205 2010-05-31
  • 打赏
  • 举报
回复
哎,我不知道怎么说,难道是我没说清楚??
to stayalive:
那代码是没错,但执行没有符合代码应该要的结果
“jsoncallback=?” 你想如何?------这样支持jsonp形式的回调,jquery会自动加上一个:jsonp+随机数

to theforever:
我这个url 参数是个配置项,可能是var url="<%=ServerConfigUrl%>",但如果用户配置错误了,那这段程序会执行到$.ajaxSetup中的error函数,但上面代码却没有弹出error的错误提示,说明没达到要求。


总的意思就是我在调用$.getJSON请求后台服务时,需要捕获一切错误信息,给用户一个友好的提示:
1、如果var url="<%=ServerConfigUrl%>"配置错误了,那要捕获错误,给出提示。
2、如果后台服务出现未意料到的代码异常,那就会抛个500 Internal Server Error,这时按正常情况,js端没反应,但我也要捕获到并给出个友好提示


想了解我意思的可以看以下网址,这个就正如var url = "http://localhost/abc.aspx"; 的形式,能达到要求,给出错误提示。但如果是jsonp格式var url = "http://localhost/abc.aspx?jsoncallback=?";那就捕获不到错误异常了。
http://www.maheshchari.com/jquery-ajax-error-handling/
  • 打赏
  • 举报
回复
我也奇怪楼上说的地方。
另外,这种404错误,一般是在服务器上设置的。
stayalive 2010-05-28
  • 打赏
  • 举报
回复

<script type="text/javascript">
//<![CDATA[
$(function(){
var url = "http://localhost/abc.aspx"; //这个url地址是不存在的

var url = "http://localhost/abc.aspx?jsoncallback=test";
$.ajaxSetup({
error:function(x,e){
alert("error");
return false;
}
});


$.getJSON(url , function(data){
alert(data);
});
});
//]]>
</script>

测试没有问题,“jsoncallback=?” 你想如何?
net205 2010-05-28
  • 打赏
  • 举报
回复
to lieri111:
不管打印的问题,我这想法完全有可能,比方说我这个url地址是个配置项,如果系统配置错误那需要提出个友好提示,要不然用户一直看到那个loading...没反应,还以为程序太慢了呢。
另外如果这个url的服务页面代码有异常错误(没预料到的异常,不在try..catch内),也会一直loading...

所以我是想在js调用url服务时捕获到异常错误,给出提示。
如果使用var url = "http://localhost/abc.aspx";可以捕获到异常,能满足我的要求;
但如果使用var url = "http://localhost/abc.aspx?jsoncallback=?";却不行。

所以有此这问..
passself 2010-05-28
  • 打赏
  • 举报
回复
楼主你是在打印错误,所以只有你写错的时候才能打印出来

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧