我懶惰加載我們的頁面上的html片段,以提高性能。 jQuery的加載方法不提供對完整ajax api的訪問(像錯誤回調之類的東西),所以我創建了一個更強大的版本。jquery 1.5.1,asp.net和firefox間歇性ajax故障
我在每頁上調用這個方法每頁3-5次,並且當有一個AJAX調用出現某種錯誤時記錄。我發現大約有0.3%的時間ajax調用失敗,大部分失敗都在firefox 3.6中。我在ASP.NET服務器端使用jQuery 1.5.1。錯誤回調的 'errorThrown' 參數讀取:
[異常... 「組件返回失敗代碼:0x80040111(NS_ERROR_NOT_AVAILABLE)[nsIXMLHttpRequest.getAllResponseHeaders]」 nsresult: 「0x80040111(NS_ERROR_NOT_AVAILABLE)」
和jqXHR寫着:
{「readyState的」:4,「狀態」:0,「狀態文本」:「錯誤」}
我已確認有用戶他們正在experienceing這個問題,它不只是僵屍網絡或一些記錄無經驗的錯誤。
這裏是我的 「負荷」 插件的代碼
(function ($) {
$.fn.elfLoad = function (url, options) {
return this.each(function() {
var $elem = $(this);
options = $.extend({}, {
type: "GET",
dataType: "html",
data: "",
error: function (jqXHR, status, errorThrown) {
$elem.html('<div class="elf-missing-content centerText">Doh! Something did not go so well when trying to load this content. Please try again later.');
elf.ajax.logInfo("data: " + options.data + " errorThrown: " + errorThrown + " webmethod: " + options.url + "jqXHR: " + JSON.stringify(jqXHR),"elfLoad");
}
}, options);
options.success = function (data, status, jqXHR, responseText) {
responseText = jqXHR.responseText;
if (jqXHR.isResolved()) {
jqXHR.done(function (r) {
responseText = r;
});
$elem.html(responseText);
}
if (options.callback) {
var callbackArgs = {
responseText: responseText,
$elem: $elem,
status: status,
jqXHR: jqXHR
};
$elem.each(options.callback, [callbackArgs]);
}
}
options.url = url;
if (options.data) {
options.data = $.param(options.data, $.ajaxSettings.traditional);
options.type = "POST";
} else {
options.data = "";
}
$.ajax(options);
});
}
})(jQuery);
對它的調用看起來像這樣$( '#集裝箱')elfLoad( 'url.aspx',{FOO:「酒吧「});
有沒有其他人有這個問題?有任何想法嗎? jQuery聲稱最近關閉了一張看起來像1.5.1這樣的票,但我看到其他人有類似的問題。 http://bugs.jquery.com/ticket/8400
謝謝!