xmlHttpResponse对象未在IE7中返回正确的responseText

时间:2013-09-04 14:43:10

标签: javascript ajax xmlhttprequest responsetext

在我的应用程序中为了避免重复的组名我试图通过AJAX调用验证用户输入的值。但我没有收到预期的responseText但我从缓存接收responseText。 JS档案:     尝试{     if(window.ActiveXObject)// IE        var xhr = new ActiveXObject(“Microsoft.XMLHTTP”);     else if(window.XMLHttpRequest)// other        var xhr = new XMLHttpRequest();     其他         alert(“您的浏览器不支持AJAX”);         } catch(e){alert(“creting中的错误xmlhttpresponse:”+ e);}

    escName= document.forms(0).txtEscalationName.value;
    escId = document.forms(0).hidGroupId.value;

    urlParam = "escName=" +escName +"&escCode=" +escId;
    alert(".."+urlParam);       
    xhr.open("GET", "/myapp/jsp/main/escalationNameCheck.jsp?"+urlParam+"&ran="+Math.random() ,true);

xhr.setRequestHeader("Cache-Control","no-cache");
 xhr.setRequestHeader("Pragma","no-cache"); 
xhr.onreadystatechange = function() {

    if (xhr.readyState == 4)
    {               
        if (xhr.status == 200)
        {   
            if (xhr.responseText != null) 
            {   

            alert(document.getElementById("escalationNameValidate"));

                try{
                var populate = document.getElementById("escalationNameValidate");

                populate.innerHTML = xhr.responseText;
                }catch(e){

                alert("ERROR!...."+e);
            }
            }
            else
            {
                alert("Failed to receive JSP file from the server - file not found.");
                return false;
            }

        }
        else
            alert("Error code " + xhr.status + " received: " + xhr.statusText);
    } else
    alert("not ready");
} 
xhr.send(null); 

在此处提及:responseText - XMLHttpRequest 我试过提到像下面这样的事件,但它给出了异常,说目标是null或不是对象。         xhr.onreadystatechange = function(event){     var xhr = event.target;         if(xhr.readyState == 4)         {alert(“first if”);
            if(xhr.status == 200)             {alert(“second if”);
                if(xhr.responseText!= null)                 {alert(“third if”+ xhr.responseText);

            alert(document.getElementById("escalationNameValidate"));

                try{
                var populate = document.getElementById("escalationNameValidate");
                alert("11");
                alert("pop.."+populate.innerHTML);
                populate.innerHTML = xhr.responseText;
                }catch(e){

                alert("ERROR!.xhr..."+e);
            }
            }
            else
            {
                alert("Failed to receive JSP file from the server - file not found.");
                return false;
            }
            alert("escNameDuplicate"+document.getElementById("escNameDuplicate"));
        }
        else
            alert("Error code " + xhr.status + " received: " + xhr.statusText);
    } else
    alert("not ready");
} 

所以我试过1.在requestHeader中将cache-control作为no-cache 2.在定义xhr时使用var xhr将xhr作为局部变量。 3.还将事件实例指向onreadystatechange函数。 浏览器版本:IE7

请帮助。 问候, Nidhya

1 个答案:

答案 0 :(得分:0)

我通过修改IE设置中的几个选项完成了这项工作。 即使我关闭浏览器并再次打开IE浏览器,我的响应也会在浏览器中缓存。 所以,我做的是,去工具 - >互联网选项 选择浏览器历史下的设置 在“检查存储页面的更新版本:”下选择“每次访问网页时” 保存设置。

希望它能帮助像我这样的其他人。