jQuery を使用してオブジェクトのクローンを作成し、ブラウザがオンラインに戻ったときに呼び出しを再開することができます。
// Deep copy
var savedXhr= jQuery.extend(true, {}, xhr);
これが本当に機能するかどうかわからないので、試してみてください
編集 - 試してみましたが、そのオブジェクトで send() を呼び出すことはできません。これはxhr
、元のリクエストではなく、jQuery によって作成された「偽の」オブジェクトであるためです。別のアプローチとして、設定オブジェクトを保存してから、それらの設定で別の $.ajax 呼び出しを開始します。基本的にあなたはそうします
var settingsSaved;
$(document).ajaxSend(function(event, xhr, settings, response) {
if (!navigator.onLine) {
settingsSaved = jQuery.extend(true, {}, settings);
xhr.abort();
} else {
//Send the request with the old settings
$.ajax(settingsSaved);
//abort the new request
xhr.abort();
}
}
$.ajax を呼び出すたびに別のイベントがトリガーされるため、正確なフロー制御が必要になることに十分注意してください。オブジェクトの値を使用ajaxSend
して新しいイベントを開始することもできます。XMLHTTPRequest
settingsSaved
このフィドルを見てください。最初にボタンをクリックすると、通話が中止されます。コールが古い設定で 2 回目に開始され、それ以降はすべてのリクエストが正常です。
http://jsfiddle.net/hFmWX/