スクリプトにいくつかのajaxリクエストがあり、いくつかは同期します。いくつかは非同期です。apload.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をデクリメントしたいと思います。だから私は本当の問題はなぜこれがそうではないのかということだと思います。
どんな考えでも歓迎します。