私のアプリケーションでは、グループ名の重複を避けるために、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
よろしくお願いします。よろしく、ニディヤ