1. ホーム
  2. jquery

[解決済み】jQuery .loadのレスポンスがキャッシュされないようにする。

2022-04-16 20:09:17

質問

以下のコードで、あるURLに対してGETリクエストをしています。

$('#searchButton').click(function() {
    $('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val());            
});

しかし、返された結果が常に反映されるとは限りません。例えば、レスポンスに変更を加えてスタックトレースを吐き出したのですが、検索ボタンをクリックしてもスタックトレースが表示されませんでした。ajaxレスポンスを制御する基礎となるPHPコードを見たところ、正しいコードがあり、ページを直接訪問すると正しい結果が表示されましたが、.loadによって返された出力は古かったのです。

ブラウザを閉じてからもう一度開くと、一度はうまくいくのですが、その後、古い情報を返すようになります。jQueryでこれを制御することはできますか?それともPHPスクリプトにヘッダーを出力させてキャッシュを制御する必要があるのでしょうか?

解決方法は?

のような、より複雑な関数を使用する必要があります。 $.ajax() リクエストごとにキャッシュを制御したい場合。また、単にすべてのキャッシュを無効にしたい場合は、スクリプトの先頭に次のように記述してください。

$.ajaxSetup ({
    // Disable caching of AJAX responses
    cache: false
});