ホームページ >ウェブフロントエンド >jsチュートリアル >IE8/IE9 での Ajax キャッシュの問題
この記事は、IE8/IE9 での Ajax キャッシュの問題の解決策を紹介します。非常に優れているので、興味のある方は一緒に読んでください。
AJAX とは、「非同期」を意味します。 「JavaScript と XML」 (Asynchronous JavaScript and XML) は、インタラクティブな Web アプリケーションを作成するための Web 開発テクノロジを指します。 AJAX = 非同期 JavaScript および XML (標準ユニバーサル マークアップ言語のサブセット)。
AJAX は、高速で動的な Web ページを作成するためのテクノロジーです。
AJAX を使用すると、バックグラウンドでサーバーと少量のデータを交換することで、Web ページを非同期に更新できます。これは、ページ全体を再読み込みしなくても、Web ページの一部を更新できることを意味します。
本題:
最近、フロントエンドでjqueryを使用して、Webサイトのログイン登録ボックスを作成しています。サインとログインは別のページにないため、ポップアップ ボックスとして表示されます。そこで、ajax を使用して登録とログイン機能を実装することにしました。順風満帆かと思いきや、テスト中に奇妙な問題が発覚。 chrome、ff、IE10+でテストする場合は基本的に問題ないのですが、IE8,9で実行すると、正しいユーザー名とパスワードを入力してもログインできないようです。最初、私はセッションが失われたと思い、背景のフレームワークについて文句を言い始めました。
しかし、辛抱強くデバッグを続けた結果、セッションは失われていないことがわかりました。今とても心配していますが、長期間使用しているのに登録やログインさえできない可能性がありますか?そのため、私は自分自身を卑下し、人生のさまざまな変化や物事の無常を嘆くようになります。 1/3ほどお香を焚いた後、元気を出すことにしました。
いくつかのコメントを付けてコードを注意深く観察したところ、$.ajax の URL が少し奇妙であることがわかりました。アドレスは正しいですが、プログラマーと包囲ライオンの直観により、IE8 と 9 の 2 つの兄弟が独自に私の ajax をキャッシュした可能性があることが分かりました。そう思うと急に手が震えて、慌ててURLの後にタイムスタンプを追加しました。
//就像这样url:myurl+"?t="+(new Date).valueOf()
次に、キャッシュをクリアして再試行すると、成功します。普通にログインできます。
Baiduで調べてみたところ、IE8 9ではAjaxリクエストを行う際、前回のリクエストと同じであればサーバーからデータを取得するのではなく、ローカルで直接データを取得するようになっています。
このように、下位バージョンのIEの過剰な熱意に対処するために、$.ajaxを使用する場合、そのcache属性をfalse(テストされていません)に設定できます、
cache:
Boolean型パラメータが必要です、デフォルトは true (dataType が script の場合、デフォルトは false)、false に設定すると、ブラウザーのキャッシュからリクエスト情報が読み込まれません。
またはグローバルに設定します(テストされていません)
//$.ajaxSetup() 方法设置全局 AJAX 默认选项。$.ajaxSetup({ cache: false });
これにより、もうキャッシュについて心配する必要がなくなります。
でも、結局、迷惑をかけるようなキャッシュの設定はされていないので、他のブラウザでは普通に使えます。そのため、IE8 9ではキャッシュ内の情報を無効にする設定を別途行う必要があります。
//jquery 1.9.0后取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){ //做处理 }
1.9.0以降は、$.supportを使って判断することができます
// IE6789,input元素的checked属性不能被拷贝// IE下,input被更换类型后,无法保持前一个类型所设的值if(!$.support.radioValue&&!$.support.noCloneChecked){ //做处理 }
以上、皆さんの参考になれば幸いです。
関連記事:
AjaxアクセスでIE8が毎回更新できない問題AjaxがRestfulインターフェースを呼び出してJson形式のデータを送信する方法(コード付き)
Boaサーバー配下のAjaxとCGI通信(画像とテキストのチュートリアル)
以上がIE8/IE9 での Ajax キャッシュの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。