我有一個腳本幾個Ajax請求,一些同步異步一些我用pload.gif時顯示一個Ajax請求的有效範圍超過1秒。我發現在一種情況下,即使請求成功並且預期的操作完成,pload.gif也會繼續顯示。 N:B:沒有其他請求已被觸發,即$ .active = 1。但ajaxStop不會觸發此外,我已經測試了ajaxComplete和ajaxSuccess(不是我想要的這些,因爲我想捕獲任何異步請求),這些也不會觸發無論是。
這裏是有問題的請求:
$.ajax({
beforeSend: function(){
$("#loading p").append("validate class schedules");
console.log("validate class schedules");
},
type: "POST",
url: "../_admin/admin_Validate_Class_Schedule.php",
data: {class_Key: current_Class_Key, schedule_Key : current_Schedule_Key},
dataType: "text",
async: false,
success: function(return_Data){
console.log("success");
var result = $.trim(return_Data);
console.log("result: " + result + " " + "call count: " + call_Count + " : " + $("#schedule_Description").val() + " " + $("#schedule_Description").val().length + " " + current_Class_Key);
if (result == "exists"){
$("#create_Schedule .form_Submit").attr("value", "Update Schedule");
$("#create_Schedule").attr("action", "process_Schedule_Update.php");
$(".form_Footer .form_Submit").css("color", "#fff");
$(".form_Footer .form_Submit").removeAttr("disabled");
} else {
$("#create_Schedule .form_Submit").attr("value", "Create Schedule");
$("#create_Schedule").attr("action", "process_Schedule_Create.php");
$(".form_Footer .form_Submit").css("color", "red");
$(".form_Footer .form_Submit").attr("disabled","disabled");
if ((current_Class_Key.length != 0) && ($("#schedule_Description").val().length != 0)){
$(".form_Footer .form_Submit").css("color", "#fff");
$(".form_Footer .form_Submit").removeAttr("disabled");
}
}
},
error: function(){
console.log("Validate Could not retrieve XML file.");
}
}); // end ajax call
我的誘惑是使用下面的成功分支
if ($.active == 1){ // nothing else requested which should be the case
$.event.trigger("ajaxStop"); // force a stop
$.active = 0; // force active to zero as belt and braces as not
} // sure if triggering stop will set active to zero
但是我不確定到底 - 這是存儲了一個問題稍後,爲什麼這應該是必要的。我不想在我的所有請求中開始編碼。我希望我的所有請求在完成後減少$ .active。所以我想真正的問題是爲什麼不是這樣?
任何想法歡迎。
善良,這對我來說是新的。想不到爲什麼我以前沒有碰到過這個。我將不得不更詳細地閱讀。我對此的第一次快速和骯髒的測試似乎已經消除了這個問題。將適當的代碼給它一個去。可能必須稍後再回來並重寫其他請求。 – codepuppy
祝你好運,讓社區知道這是否適合你!如果可能的話,它是如何解決你的特定問題的細節。 – Asciiom
嗨,我沒有聘請推遲在我的解決方案。儘管推遲工作,我可以看到,這是未來的發展方向,但我沒有采用這種方式,原因是我必須重新編寫我的所有請求,以在代碼中提供一致的標準。我承認我無法解釋請求在這個實例中減少$ .active的失敗。隔離了一個例子後,我確信這個單一事件不會發生。我知道這是一個小周,並且很虛弱,但是它完成了這項工作。儘管如此,這一點非常有用,因爲我現在已經被推遲推遲。 – codepuppy