读书人

AJAX 交付后 第一次正常。第2次没反应

发布时间: 2013-01-05 15:20:39 作者: rapoo

AJAX 提交后 第一次正常。第2次没反应
IE下第一次正常。第2次没反应。以后都没反应了。。。。
FF下没有任何问题
Chrom下没有任何问题

已经加了时间戳了
服务器端每次都能收到请求。。IE下发送请求正常,但只能响应一次。是不是我JS写的不行啊??


function CK_validateCode(obj){
obj.style.backgroundColor="";
xmlhttp.onreadystatechange=c;

xmlhttp.open("post","checkValidateCode.aspx",true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
var param="validateCode="+$("validateCode").value+"&r="+Math.random();
alert(param);
xmlhttp.send(param);

}
function c(){
if(xmlhttp.readyState==4){
alert("msg");
if(xmlhttp.responseText=="0")
{
$("v5_img").src="../css/accept.png";
}else {
$("v5_img").src="../css/exclamation.png";
}
}
}

[解决办法]
这个是IE下的一个bug, 在IE下就会出现这个问题。

如果你 ajax 的 参数没变的话或者和最近请求参数相同的话,那么IE就不会再次去请求了。


你只要想让 ajax 请求的页面参数 每次不同就可以了。
var a=new Date();
var param="validateCode="+$("validateCode").value+"&r="+a;

//此处将换成时间,则任何时刻都 不同 了,这样就可以保证了



[解决办法]
1、:
xmlhttp.open("post","checkValidateCode.aspx?t="+new Date().getTime(),true);

2、:

function c(){
if(xmlhttp.readyState==4){
alert(xmlhttp.status);//跟踪一下状态值的变化
if(xmlhttp.status==200){
var ret=xmlhttp.responseText;
xmlhttp=null
if(ret=="0"){$("v5_img").src="../css/accept.png";}
else{$("v5_img").src="../css/exclamation.png";}
}
}
}

读书人网 >JavaScript

热点推荐