福岡 ワードプレス システム開発 株式会社ジーティーアイ のブログ

なんか変だと思ったら Ajax のキャッシュだった

なんか変だと思ったら Ajax のキャッシュだった

SELECT 要素を親子関係で 親を選んだら 子要素が入れ替わるもので

Ajax で値を取得していました。

ブラウザやサーバーにもよるのですが何度か目に変な挙動が・・・。

ずっと返答がないような感じ。

・・・なんかおかしいので色々試行錯誤・・・(今思うと何やったか覚えていない・・・)

結果これかも・・・的な一部解決した原因がこれ・・・

キャッシュ・・・かも

Ajax でキャッシュっていうと IEで2回目の通信時に同じ結果が戻ってくるっていうことがありました。

その昔のことなので今のようにjQueryでそもそも組んでない HttpRequest がどうのこうのだった気がするんですが

そういう感じではなく今なら jQuery で cache ってパラメータに false 指定してあげれば良いようだ・・・。

ってことでやろうと思ったら・・・

HEAD と GET リクエストの時だけ・・・って

参考文献こちら

で、同記事に解決方法(POST時の処理)も記述されてて助かりました。

 

$.ajax({
    type : "POST",
    url : "http://dev.blog.fairway.ne.jp",
    beforeSend : function(xhr){
        xhr.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
    },
    data : {
        hoge : "fuga"
    }
}).done(function(success){
    console.log(success);
});

こうすれば良いと・・・。
—- 以下、記事より引用です —-

POST時にキャッシュされた値が使われてしまっていた場合は、XMLHttpRequest.setRequestHeader を使ってリクエストヘッダで If-Modified-Since を設定することによりキャッシュされた値が使用されなくなります。
ただXMLHttpRequest.setRequestHeader は XMLHttpRequest.open の後にしなければエラーになってしまいますので beforeSend でコールバック関数を指定します。

※ご利用は自己責任でお願いします。

ひとまず検証してみまーす!

忘備録的に書いておきます。

アイキャッチは キャッシュ違い(cash)ということで・・・・。

この記事をシェアする

記事一覧へ戻る

関連記事 Relation Entry

IP あなたが接続中のIPアドレス:216.73.216.31