日期:2014-05-16  浏览次数:20335 次

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";}
    }
  }
}