异步ajax时重复接收

本文深入探讨了在使用异步AJAX回调函数时遇到的异常现象,详细解释了为何在服务器响应一次的情况下,特定变量的打印结果显示为三次。通过分析代码和逻辑流程,最终找到了问题所在并提供了解决方案。

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

	var xmlhttp;
	function loadXMLDoc(url,cfunc){
		//
		alert("in loadXMLDoc");
		if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
			xmlhttp=new XMLHttpRequest();
		}else{// code for IE6, IE5
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (xmlhttp!=null){
			xmlhttp.onreadystatechange=cfunc;
			xmlhttp.open("GET",url,false);//同步请求
			xmlhttp.send();
		}else{
			alert("Your browser does not support XMLHTTP.");
		}
		alert("out of loadXMLDoc ");
	}
	var count=0;
	function ajax(ss,code){
		alert("ajax:"+ss);
//		var returntext=0;//接收服务器返回值
		loadXMLDoc("Inquiry.c?"+ss,function (){
			if (xmlhttp.readyState==4 && xmlhttp.status==200){// 4 = "loaded"// 200 = OK
				//服务器传回json数据
				//{resp:"sucess"} 
				//initbarr [{},{}]
//				alert(++count+"xmlhttp.readyState="++"xmlhttp.status"+);
				returntext=xmlhttp.responseText;
				alert("returntext in ajax"+returntext);
				//return returntext;//服务器的返回
			}
		   else{
//		    	alert("Problem recieving XML data");
		    	}
			});
//		return returntext;
		alert("out of ajax");
	}

在外部调用了ajax()函数,但是出现了奇怪的问题

在后台服务器只发送了一次的情况下,returntext in ajax跳出了三次

但是当我把 alert(++count+"xmlhttp.readyState="++"xmlhttp.status"+);

加上,returntext in ajax就只跳出一次了。

请问这是为什么啊。

因为没有解决这个问题,所以改用同步ajax了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值