
function getXMLHttpRequest()
{
var xhr = false
if ( window.XMLHttpRequest )
{
xhr = new XMLHttpRequest()
if ( xhr.overrideMimeType )
{
xhr.overrideMimeType(”text/xml”)
}
}else if ( window.ActiveXObject )
{
try{
xhr = new ActiveXObject(”Msxml2.XMLHTTP”)
}catch(e)
{
try{
xhr = new ActiceXObject(”Microsoft.XMLHTTP”)
}catch(e)
{
xhr = false
}
}
}
return xhr
}
window.onload = function()
{
var _x = getXMLHttpRequest()//获得XMLHttpRequest对象
if ( !_x ) return false
_x.open(”get”,http://www.baidu.com,true)
_x.onreadystatechange = function()
{
if ( _x.readyState == 4 &&_x.status == 200 )
{
clearTimeout(clearTO)//如果准备状态成功,并且HTTP状态码正确则清除setTimeout
alert(”Success”)
}
}
var cleaeTO = setTimeout(function() /*重点,在请求发布后开始设置setTimeout,如果请求状态不成功也就是readyState != 4 那么setTimeout将会在5秒后运行,并d出信息提示,要是请求成功,将会清除该setTimeout*/
{
_x.abort()//终止XMLHttpRequest对象
alert(”系统异常,请您刷新页面或稍后再试….”)
},50000)
_x.send(null)
}
</script>
ajax请求时有个参数可以借鉴一下var ajaxTimeOut = $.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等值的情况
ajaxTimeOut.abort()//取消请求
alert("超时")
}
}
})
设置timeout的时间,通过检测complete时status的值判断请求是否超时,如果超时则取消请求
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)