最近工作遇到了一个问题,就是webservice请求服务默认的超时时间是3min,但是在两个不同的项目中,一个项目的超时是生效的,一个项目的超时是不生效的。百般折磨,浏览众多博客,查看源码,尝试多种方法但是仍然不可控。
于是想到既然后台超时不可控,那么我们可以在前台进行控制。
tips:webservice请求是经由前台button触发的。
代码如下:
var ajaxTimeoutTest = $.ajax({
url:'', //请求的URL
timeout : 1000, //超时时间设置,单位毫秒
type : 'get', //请求方式,get或post
data :{}, //请求所传参数,json格式
dataType:'json',//返回的数据格式
success:function(data){ //请求成功的回调函数
alert("成功");
},
complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数
if(status=='timeout'){//超时,status还有success,error等值的情况
ajaxTimeoutTest.abort();
alert("超时");
}
}
});
设置timeout的时间,通过检测complete时status的值判断请求是否超时,如果超时执行响应的操作。