私はログインフォームを持っています。このフォームでは、ユーザーはusrname/passwordを入力し、ログインボタンをクリックしてリクエストをサーバーに送信できます。Ajax.UpdateがIE 8で動作しません
ログインボタンはsubmitLoginFormIntoDivAndReloadという名前の関数を呼び出し、submitLoginFormIntoDivAndReload関数はsubmitFormObjIntoDivAndReloadという名前の別の関数を呼び出します。ここで
は、機能の詳細は以下のとおりです。
function submitLoginFormIntoDivAndReload(servletUrl, formObj, divId) {
//var formObj = document.getElementById(formId);
var shortUserName = formObj.shortusername.value;
alert("starting userName: " + shortUserName);
var organization = formObj.organization.value;
alert("organization: " + organization);
formObj.username.value = createLdapString(shortUserName, organization);
alert("ending userName: " + formObj.username.value);
var loggingInContent = "<table><tr><td width='600px' align='center'><p>logging in</p></td></tr></table>"
document.getElementById(divId).innerHTML = loggingInContent;
submitFormObjIntoDivAndReload(servletUrl, formObj, divId);
}
function submitFormObjIntoDivAndReload(url, formObj, divId) {
alert('Form object: ' + formObj);
alert('url: ' + url);
alert('divId: '+divId);
var myRequest = new Ajax.Updater(divId, url,
{ method: 'post',
parameters: Form.serialize(formObj),
onSuccess: function(reponse) {
window.location.reload();
}
});
alert("after update");
}
このコードは、Firefox上で完璧に動作します。ただし、IEでは動作しません。
IEでは、(デバッグ用に)すべてのアラートを取得できます。しかし、Ajax.Updaterはサーバーに要求を送信しないようです(私のサーバー側では出力が見えません)。
FireFoxでは、私もすべての変更を得ることができます。そして私はAjax.Updaterが私のサーバー側で期待される出力を見ることができるので、サーバーに要求を送信することがわかります。
私はオンラインを検索し、誰かがIEのキャッシュの問題があると述べた。 Ajax updater not working in internet explorer をしかし、問題ではない「POST」メソッドのために、唯一の「GET」メソッドのためにあるようです。私は "POST"メソッドを使用しています。私もフォームに偽の入力を追加しましたが、それはまだ動作しません。誰もが考えていますか?どうもありがとうございました!
ところで、私はプロトタイプ1.5.1を使用しています。
なぜこのような古いバージョンのPrototypeを使用していますか? 1.7はしばらく外に出ており、多くの改良が施されています。 – megaflop
私は1.7に変更されました。それはIEで一度働いた。しかし、それ以上は機能しません。これは本当にキャッシュの問題ですか? – Jing
おそらく。試行する前にブラウザのキャッシュをクリアしようとしましたか?できる場合は、サーバーの応答をキャッシュ防止ヘッダーを送信できますか? 「Cache-Control:no-cache、must-revalidate」と「Expires:Sat、1997年7月26日05:00:00 GMT」はトリックを行うべきである – megaflop