jQuery.get()
は、get呼び出しを伴うjQuery.ajax()
の省略形です。しかし、.get()
呼び出しのデータにcache:false
を設定すると、サーバーに送信されるのは、値がfalseのcacheというパラメーターです。私の意図は、jQuery.ajaxデータでcache: false
を使用した場合に発生するキャッシングを防ぐために、データと共にタイムスタンプをサーバーに送信することです。 jQuery.get呼び出しをjQuery.ajax呼び出しに書き換えたり、
$.ajaxSetup({
// Disable caching of AJAX responses
cache: false
});
更新:回答ありがとうございます。あなたはすべて正しいです。ただし、getコールに、キャッシュしないことを知らせる方法、またはその値を基になる.ajax()に送信して、それをどう処理するかを知らせる方法があることを望んでいました。
私はこれまでに特定された3つの方法以外の4番目の方法を探しています。
AjaxSetupを介してグローバルに行う
.get呼び出しの代わりに.ajax呼び出しを使用する
タイムスタンプを保持する新しいパラメーターを.get呼び出しに追加して、手動で実行します。
この機能は.get呼び出しに組み込む必要があると考えました。
私にとって、それを行う正しい方法はリストされているものでしょう。 ajax
またはajaxSetup
のいずれか。 get
を本当に使用し、ajaxSetup
を使用しない場合は、独自のパラメーターを作成して、現在の日付/時刻の値を指定できます。
しかし、他の方法のいずれかを使用しないことの動機に疑問を呈します。
自分でパラメータを追加します。
$.get(url,{ "_": $.now() }, function(rdata){
console.log(rdata);
});
JQuery 3.0の時点で、これを行うことができます。
$.get({
url: url,
cache: false
}).then(function(rdata){
console.log(rdata);
});
代わりに、キャッシュをオフにできるAJAXメソッドを使用する必要があると思います。
$.ajax({
url: "test.html",
data: 'foo',
success: function(){
alert('bar');
},
cache: false
});
JQueryドキュメントによると、.get()
は、url
、data
(コンテンツ)、dataType
、およびsuccess
コールバックのみをパラメーターとして受け取ります。ここで本当にやりたいことは、送信される前にjqXHRオブジェクトを変更することです。 .ajax()
を使用すると、これはbeforeSend()
メソッドで実行されます。ただし、.get()
はショートカットであるため、許可されません。
ただし、.ajax()
呼び出しを.get()
呼び出しに切り替えるのは比較的簡単です。結局、.get()
は.ajax()
のサブセットにすぎないため、.ajax()
のすべてのデフォルト値を使用できます(もちろん、beforeSend()
を除く)。
編集:
:: Jivingsの回答をご覧ください::
ああ、cache
パラメーターを忘れてしまいました! beforeSend()
は他のヘッダーを追加するのに便利ですが、組み込みのcache
パラメーターはここでははるかに簡単です。
キャッシュの設定:Belowメソッドを使用したjQuery.get呼び出しでfalse
同じミリ秒以内に複数のリクエストが発生しない限り、衝突を回避する新しいDate().getTime(),
を使用します。
または
以下は、使用するjQueryメソッド($ .get、$。ajaxなど)に関係なく、将来のすべてのAJAX要求がキャッシュされないようにします。
$.ajaxSetup({ cache: false });
コールバック構文は 非推奨 であることに注意してください。
廃止のお知らせ
JQuery 1.5で導入されたjqXHR.success()、jqXHR.error()、およびjqXHR.complete()コールバックメソッドは、jQuery 1.8で非推奨になりました。最終的な削除のためにコードを準備するには、代わりにjqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用します。
promise
インターフェイスを使用した最新のソリューション
$.ajax({url: "...", cache: false}).done(function( data ) {
// data contains result
}).fail(function(err){
// error
});
私はゲームに非常に遅れていますが、これは他の人を助けるかもしれません。 $ .getでこの同じ問題にぶつかり、盲目的にキャッシュをオフにしたくなかったし、タイムスタンプパッチが気に入らなかった。そのため、少し調査した結果、キャッシングを使用しない$ .getの代わりに$ .postを使用できることがわかりました。そのような単純な。 :)