我知道stackoverflow中有很多关于此类问题的问题,但是,那些不会帮助我解决我的问题
这是jquery代码
function _get_activities_ajax() {
$(".activity-accordian h3").click(function() {
var catrgory = $(this).attr("data-subject");
var catId = $(this).attr("id");
if($("#"+catId+"-wrap ul").children().length==0) {
$("#"+catId+"-wrap").append("<div class='preloader'></div>");
$.ajax({
url: _getActivityAjax,
data: {catrgory: catrgory},
type: 'POST',
success: function(result) {
$(".preloader").remove();
$("#"+catId+"-wrap").append(result);
},
error: function(e) {
}
});
}
$(".activity-accordian h3").removeClass("active-header").removeClass("header-1");
$(this).addClass("active-header");
$(".categ-content ul").css("display","none");
$("#"+catId+"-wrap ul").css("display","block");
});
}
这是为了将数据集输入手风琴而编写的。
我需要阻止第二次通话,直到第一次完成。任何帮助都会很感激。
谢谢
答案 0 :(得分:4)
添加一个包含Ajax调用状态的变量。
<强> JS 强>
function _get_activities_ajax() {
//Variable status ajax call
var status = true;
$(".activity-accordian h3").click(function() {
var catrgory = $(this).attr("data-subject");
var catId = $(this).attr("id");
if($("#"+catId+"-wrap ul").children().length==0 && status) { //check if true
//New ajax call so status set to false
status = false;
$.ajax({
url: _getActivityAjax,
data: {catrgory: catrgory},
type: 'POST',
success: function(result) {
//set status done to true
status = true;
},
error: function(e) {
//if error also set status to true
status = true;
}
});
}
...
});
}
答案 1 :(得分:2)
以前这些问题只是避免在ajax中使用 async
属性。由于这会冻结GUI几秒钟,因此他们使用callbacks
即兴创作。
在你的代码中,在第一个成功回调中编写另一个ajax调用。
示例:强>
$.ajax({
url: _getActivityAjax,
data: {catrgory: catrgory},
type: 'POST',
success: function(result) {
$(".preloader").remove();
$("#"+catId+"-wrap").append(result);
//Place your second ajax
},
error: function(e) {
}
});