0

私のアプリケーションでは、グループ名の重複を避けるために、AJAX 呼び出しを通じてユーザーが入力した値を検証しようとしています。しかし、期待されるresponseTextを受け取っていませんが、キャッシュからresponseTextを受け取っています。JS ファイル: try{ if (window.ActiveXObject) //IE var xhr = new ActiveXObject("Microsoft.XMLHTTP"); else if (window.XMLHttpRequest) //other var xhr = new XMLHttpRequest(); else alert("お使いのブラウザは AJAX をサポートしていません"); }catch(e){alert("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 = 関数 (イベント) { var xhr = event.target; if (xhr.readyState == 4) { alert("最初の場合");
if (xhr.status == 200) {alert("second if");
if (xhr.responseText != null) {alert("second 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 で no-cache として cache-control を指定してみました。 2. var xhr を使用して xhr をローカル変数として定義します。3. onreadystatechange 関数でもイベント インスタンスを指定しました。ブラウザのバージョン: IE7

よろしくお願いします。よろしく、ニディヤ

4

1 に答える 1

0

IE 設定のいくつかのオプションを変更することで、これを実現しました。ブラウザーを閉じて IE を再度開いても、応答がブラウザーにキャッシュされていました。それで、私がしたことは、[ツール] --> [インターネット オプション] に移動し、[ブラウザの履歴] の下の [設定] を選択します。

それが私のような他の誰かを助けることを願っています。

于 2013-09-05T05:42:08.597 に答える