-1

非常に奇妙な問題があります。ボタンをクリックすると、PostgreSQL データベースからデータを取得していくつかの入力を行う軸 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);
        }
    }
}
4

2 に答える 2

2

AJAX がキャッシュされている可能性がありますか? URL にタイムスタンプを追加してみてください。

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

あなたが何をしようとしているのか理解するのは難しいですが、あなたの説明から、誰かがボタンをクリックしたときに、リモート サービスからいくつかのテキスト ボックスの値を更新しようとしているように思えます。ただし、スクリプトは実際にはテキスト ボックスも作成しているようです。誰かがあなたのボタンを 2 回クリックしたときに、フィールドが DOM に既に存在するため、フィールドの作成に失敗しているのではないかと思います。おそらくページもリロードしているので、「キャッシュをクリア」した後に機能すると思います。

于 2013-06-02T13:23:20.590 に答える