2

背景: (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

4

0 に答える 0