-1

我有一个非常奇怪的问题 - 当您单击一个按钮时,我对一个轴 Web 服务进行了 ajax 调用,该服务从 PostgreSQL 数据库获取数据并填充一些输入。

但是,在我再次单击按钮时用数据填充输入后,什么也没有发生,也没有错误。只有当我删除 ie9 中的临时 Internet 文件时,我才能在输入中加载新数据。

这是单击按钮时执行的函数:

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);
        }
    }
}
4

2 回答 2

2

您的 AJAX 是否可能被缓存?尝试在 URL 中添加时间戳:

xmlhttp.open("GET", request + "?timestamp=" + (+new Date), true);
于 2013-06-02T13:53:31.627 回答
0

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

于 2013-06-02T13:23:20.590 回答