IE下jquery ajaxが最新データを取得できない問題解決(IEキャッシュ)
793 ワード
今日1つのバグを修正して、ajaxを利用してデータを検索して、グーグルのブラウザの下で最新のデータを得ることができて、IEの中で得るのは古いデータで、最新のデータを得ることができなくて、資料を調べて、やっと発見する時IEキャッシュは更におかしいです.
このajaxリクエスト用のget方式を発見すると、リクエストごとにURLがそっくりで、IEブラウザには特殊な場所があり、リクエストごとにURLが同じになると、キャッシュにある既存のデータがページに表示され、データベースを再照会することはないので、毎回古いデータが表示されます.
解決策:
それは考えられます.要求するたびにURLが違って、パラメータを追加することができます.そして、このパラメータの値は毎回違っています.タイムスタンプが一番いいです.
ここでidは有用なパラメータであり,dateパラメータは処理しなければよい.
資料を調べたところ、post方式で要求することで、この問題を回避することができ、POSTは変動的なアクセスとされている(ブラウザはPOSTの提出は、必ず変更されていると考えている).
さらに簡単な方法があります.
前提は、このリクエストのcacheがまだ存在しないことです.
このajaxリクエスト用のget方式を発見すると、リクエストごとにURLがそっくりで、IEブラウザには特殊な場所があり、リクエストごとにURLが同じになると、キャッシュにある既存のデータがページに表示され、データベースを再照会することはないので、毎回古いデータが表示されます.
解決策:
それは考えられます.要求するたびにURLが違って、パラメータを追加することができます.そして、このパラメータの値は毎回違っています.タイムスタンプが一番いいです.
url: '{0}/portal/articleManager/getContents?id={1}&date={2}'.format(window.baseUrl, $("#id").val(), new Date())
ここでidは有用なパラメータであり,dateパラメータは処理しなければよい.
資料を調べたところ、post方式で要求することで、この問題を回避することができ、POSTは変動的なアクセスとされている(ブラウザはPOSTの提出は、必ず変更されていると考えている).
さらに簡単な方法があります.
cache:false,
前提は、このリクエストのcacheがまだ存在しないことです.