背景: (json 応答のみ) jQuery ajax 呼び出しのキャッシュ メカニズムを作成しています。ajax 呼び出しが成功すると、いくつかのデータを localstorage に保存します。キーはリクエストに固有の識別子であり ( と を連結しmethod
ますurl
)、値は JSON 応答であり、期限切れまでの時間などのメタデータも含まれます。同じメソッドで同じ URL への 2 回目の ajax 呼び出しで、項目が localstorage に存在するかどうかを確認します。
問題: localstorage に有効なエントリがある場合、サーバーへの ajax リクエストを停止し、成功した ajax レスポンスをトリガーして、localstorage データをresponseJSON
.
jquery がステータス コードを使用して ajax レスポンスの成功を判断していることがわかります。
// Determine if successful
isSuccess = status >= 200 && status < 300 || status === 304;
その後、遅延を解決します。
// Success/Error
if ( isSuccess ) {
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
} else {
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
$.ajaxPrefilter() メソッド (ロジックを実行するために使用しているフック) から延期された jQuery にアクセスする方法はありますか? 遅延オブジェクトにアクセスできれば、自分で解決してから ajax リクエストをキャンセルできると思いますjqXHR.abort()
か?
これが私のコードです: https://gist.github.com/jaredrada/7185419