$.getJSON 的错误处理

六月 23rd, 2010 hew Posted in JQuery | No Comments »

$.getJSON是个好东西,其亮点在于可以跨域调用数据解 析数据简单,这让很多的jQueryer乐此不彼.

好了废话不多说,进入正文:

1.设置加载图片<div id=”loading”><img src=”m/loading.gif”/></div>

2.调用数据前

setTimeout(function(){
if($(“#loading”).is(“:visible”)){
$(“#loading”).empty().append(“<p>”+timeoutStr+”<br/><a href=’javascript:void(0)’ onclick=’getZhuiList()’><img src=’m/refresh.png’/>刷新</a></p>”);
return false;
}
},timeout)

3.载入数据后

$.getJSON(url, function(msg){

$(“#loading”).hide();

…..

})
原理:
在载入数据前加个标记,我这里用的是一个loading图片,其实也可以用变量来代替,然后执行$.getJSON,这里分两种情况:一种是加载成 功,正常执行$.getJSON里面的代码;第二个是加载失败,不返回任何信息。所以,我把设置loading图片隐藏的代码放在加载成功时执行。当加载 失败时,loading图片是不会被隐藏的(废话~)。后面的我们就可以做主了,任意设置一个超时时间,用settimeout来检查有没有执行隐藏 loading的代码,具体方式是:图片是否隐藏。若图片没有隐藏,OK,我们的目的达到了,可以给用户一个提示,比如重试啊之类的!
后话:>
$.getJSON很傻很天真,所以它忽略了错误,当你用它来获取一个404页面的时候,你会发现它不会返回信息(

其实经过测试发现,有返回值的

  var url="";
var x=$.getJSON(url, function(msg){
     alert(msg);
})
alert(x.readyState)
实验结果,在Safari下
当URL正常,载入数据也正常时,第一个alert出来的是Object,第二个不弹 出
当URL为404时,Firefox下,第一个alert不弹出,第二个alert弹 出1;IE下没弹出信息

待测试…

),

setTimeout(function(){if($(“#loading”).is(“:visible”)){$(“#loading”).empty().append(“<p>”+timeoutStr+”<br/><a href=’javascript:void(0)’ onclick=’getZhuiList()’><img src=’m/refresh.png’/>刷新</a></p>”);return false;}},timeout)

Tags:

也许值得一看的


Leave a Reply