この記事の所要時間: 231

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

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

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

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

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

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

キャッシュ・・・かも

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

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

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

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

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

参考文献こちら

ajaxのキャッシュ | FAIRWAY Engineer {Blog}
http://dev.blog.fairway.ne.jp/ajax%E3%81%AE%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5/

こんにちは。kikuです。 先日ajaxでの通信で、期待通りの値が取れなくて困ったことがありました。 無事解決したので、備忘録として書き残したいと思います。 jQueryのajaxを使ってアクセスした場合、2回目以降のリクエストが実際には発行されずにキャッシュされた値が使われてしまう場合があります。 そんな

で、同記事に解決方法(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)ということで・・・・。