为什么我应该删除临时的互联网文件(在ie9),然后才能加载数据

时间:2013-06-02 13:05:57

标签: javascript

我有一个非常奇怪的问题 - 当你点击一个按钮时,我对一个从Web浏览器中获取数据并填充一些输入的轴web服务进行ajax调用。

然而,当我用数据填充输入后再次点击按钮时没有任何反应,我没有错误。只有当我删除ie9中的临时互联网文件时,我才能在输入中加载新数据。

这是单击按钮时执行的功能:

function fetchCompanyInfo() {
    var xmlhttp = createXMLHttpRequest();
    var request = "http://localhost:9090/verifydatabase/services/verifydatabase/getData";

    xmlhttp.open("GET", request, true);
    handleStateChangeFetchInfo(xmlhttp);
    xmlhttp.send();
}

function handleStateChangeFetchInfo(xmlhttp) {
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var xmlObj = xmlhttp.responseXML;
            var textXML = xmlObj.documentElement.firstChild.firstChild.nodeValue;

            if (window.DOMParser) {
                parser = new DOMParser();
                var xmlDoc = parser.parseFromString(textXML, "text/xml");
            } else {
                var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
                xmlDoc.loadXML(textXML);
            }


            var rows = xmlDoc.getElementsByTagName("row");

            for (var i = 0; i < rows.length; i++) {
                mycurrent_row = document.createElement("tr");

                var cols = rows[i].getElementsByTagName("colunm");

                for (var j = 0; j < cols.length; j++) {
                    if (cols[j].getAttribute("colname") == "biz_subject") {
                        document.getElementById("old_biz_subject").value = cols[j].getAttribute("colvalue");
                        document.getElementById("txbbiz_subject").value = cols[j].getAttribute("colvalue");
                    } else
                    if (cols[j].getAttribute("colname") == "company_type") {
                        document.getElementById("old_company_type").value = cols[j].getAttribute("colvalue");
                        document.getElementById("txbcompany_type").value = cols[j].getAttribute("colvalue");
                    } else
                    if (cols[j].getAttribute("colname") == "country") {
                        document.getElementById("old_country").value = cols[j].getAttribute("colvalue");
                        document.getElementById("txbcountry").value = "Р България";
                    } else
                    if (cols[j].getAttribute("colname") == "nace_code") {
                        document.getElementById("old_nace_code").value = cols[j].getAttribute("colvalue");
                        document.getElementById("txbnacecode").value = cols[j].getAttribute("colvalue");
                    }

                }
            }
            pinCompanyLocation(document.getElementById("old_location").value);
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您的AJAX可能会被缓存吗?尝试在网址中添加时间戳:

xmlhttp.open("GET", request + "?timestamp=" + (+new Date), true);

答案 1 :(得分:0)

很难理解你正在尝试做什么,但是根据你的描述,当你有人点击按钮时,听起来你正试图从远程服务更新某些文本框中的值。看起来你的脚本实际上也在创建文本框。我怀疑第二次有人点击你的按钮时,它无法创建字段,因为它们已经存在于DOM中。我认为它可以在你“清除缓存”后起作用,因为你可能也在重新加载页面。