ajax异步判断网站是否可以访问到的解决方法

本文介绍了一种使用JavaScript来检查网页是否可达的方法。通过创建XMLHttpRequest对象发送GET请求,并利用回调函数处理响应,以此判断目标网址是否可以正常访问。为避免缓存影响,请求中加入了时间戳参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function getXMLHttpRequest(){
  var client = getXMLHttpRequestFromIE();
   if(client == null){
        client = new XMLHttpRequest();
   }
  return client;
}

function getXMLHttpRequestFromIE(){
  var namePrefixes = ["Msxml3","Msxml2","Msxml","Microsoft"];
  for(var i = 0; i < namePrefixes.length; i++){
       try{
           var name = namePrefixes[i] + ".XMLHTTP";
           return new ActiveXObject(name);
       }catch(e){
       }
  }
  return null;
}
var client = null;
//是否可以访问
var isRun = false;
//返回值
var stateString="";
//请求url的网站
function connUrl(url){
	client = getXMLHttpRequest();
	var actionURL = convertURL(url);
	try{
		client.open("GET", actionURL, true);
		client.onreadystatechange = callBack;
		client.send(null);
	}catch(e){}
	finally{
	}
}
function callBack(){
	if(client.readyState == 4){
		stateString = client.responseText;
		if(stateString && client.status==200)
			isRun = true;
	}
}
//是否可达
function isReach(url){
	connUrl(url);
	return isRun;
}
//给url地址增加时间戳,骗过浏览器,不读取缓存    
function convertURL(url) {    
        //获取时间戳    
        var timstamp = (new Date()).valueOf();    
        //将时间戳信息拼接到url上
        if (url.indexOf("?") >= 0) {    
                url = url + "&t=" + timstamp;    
        } else {    
                url = url + "?t=" + timstamp;    
        }    
        return url;    
}
//因为是异步,先调用,此时isRun的值是false
isReach("http://www.baidu.com");
//3秒钟后判断isRun的值,如果为false认为网站不可达,类似超时时间
setTimeout(function(){   
		//alert(stateString); 
		//alert(isRun);
		if(isRun==true){
			document.getElementById("ceshi").innerText = "网站是通的!";
		}else{
			document.getElementById("ceshi").innerText = "网站不通!";
		}
	},3000);

 

<div id="ceshi"></div>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值