如下代码所示,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>

解决方案 »

  1.   

    to lieri111:
      不管打印的问题,我这想法完全有可能,比方说我这个url地址是个配置项,如果系统配置错误那需要提出个友好提示,要不然用户一直看到那个loading...没反应,还以为程序太慢了呢。
       另外如果这个url的服务页面代码有异常错误(没预料到的异常,不在try..catch内),也会一直loading...所以我是想在js调用url服务时捕获到异常错误,给出提示。
    如果使用var url = "http://localhost/abc.aspx";可以捕获到异常,能满足我的要求;
    但如果使用var url = "http://localhost/abc.aspx?jsoncallback=?";却不行。所以有此这问..
      

  2.   


    <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=?” 你想如何?
      

  3.   

    哎,我不知道怎么说,难道是我没说清楚??
    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/
      

  4.   

    刚才又测试了一下:
    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错误。
      

  5.   

    改用$.ajax试试吧 判断有没有200