Javascript 在另一个函数中运行函数,但仅在ajax完成后运行
我有一个在另一个函数中运行的函数,但有时我对服务器的ajax调用似乎在调用该函数之前还没有完成Javascript 在另一个函数中运行函数,但仅在ajax完成后运行,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个在另一个函数中运行的函数,但有时我对服务器的ajax调用似乎在调用该函数之前还没有完成 function getPlans(row, user, id, type) { $.get( "/plans/" + user + "/" + id + "/" + type + "", function(data) { $("#permissions_" + row + "_plan_type").empty(); $(data).each(fu
function getPlans(row, user, id, type) {
$.get( "/plans/" + user + "/" + id + "/" + type + "", function(data) {
$("#permissions_" + row + "_plan_type").empty();
$(data).each(function(i, e) {
$("#permissions_" + row + "_plan_type").append("<option>" + e + "</option>");
})
}).done(function() {
getPermissions(row, user, type);
})
}
功能getPlans(行、用户、id、类型){
$.get(“/plans/”+user+“/”+id+“/”+type+”),函数(数据){
$(“#权限”+行+“#计划类型”).empty();
$(数据)。每个功能(即,e){
$(“#权限+行+计划类型”)。追加(“+e+”);
})
}).done(函数(){
getPermissions(行、用户、类型);
})
}
作为一种快速解决方案您可以使用async:false调用.ajax
function getPlans(row, user, id, type) {
$.ajax({
url:"/plans/" + user + "/" + id + "/" + type + "",
type: 'GET',
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
$("#permissions_" + row + "_plan_type").empty();
$(data).each(function(i, e) {
$("#permissions_" + row + "_plan_type").append("<option>" + e + "</option>");
})
},
async:false // make synchronous
});
getPermissions(row, user, type);
}
作为快速解决方案,您可以使用async:false
调用.ajax
function getPlans(row, user, id, type) {
$.ajax({
url:"/plans/" + user + "/" + id + "/" + type + "",
type: 'GET',
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data) {
$("#permissions_" + row + "_plan_type").empty();
$(data).each(function(i, e) {
$("#permissions_" + row + "_plan_type").append("<option>" + e + "</option>");
})
},
async:false // make synchronous
});
getPermissions(row, user, type);
}
尝试从成功回调调用getPermissions()
function getPlans(row, user, id, type) {
$.get( "/plans/" + user + "/" + id + "/" + type + "", function(data) {
$("#permissions_" + row + "_plan_type").empty();
$(data).each(function(i, e) {
$("#permissions_" + row + "_plan_type").append("<option>" + e + "</option>");
});
getPermissions(row, user, type);
});
}
功能getPlans(行、用户、id、类型){
$.get(“/plans/”+user+“/”+id+“/”+type+”),函数(数据){
$(“#权限”+行+“#计划类型”).empty();
$(数据)。每个功能(即,e){
$(“#权限+行+计划类型”)。追加(“+e+”);
});
getPermissions(行、用户、类型);
});
}
尝试从成功回调调用getPermissions()
function getPlans(row, user, id, type) {
$.get( "/plans/" + user + "/" + id + "/" + type + "", function(data) {
$("#permissions_" + row + "_plan_type").empty();
$(data).each(function(i, e) {
$("#permissions_" + row + "_plan_type").append("<option>" + e + "</option>");
});
getPermissions(row, user, type);
});
}
功能getPlans(行、用户、id、类型){
$.get(“/plans/”+user+“/”+id+“/”+type+”),函数(数据){
$(“#权限”+行+“#计划类型”).empty();
$(数据)。每个功能(即,e){
$(“#权限+行+计划类型”)。追加(“+e+”);
});
getPermissions(行、用户、类型);
});
}
hmmm,我想你可能把回调搞错了。首先调用函数(数据)
回调,然后调用完成
回调。为什么要把它们放在两个不同的回调函数中?要在.each()
.hmmm之后运行getPermissions
,我想您可能把回调搞混了。首先调用函数(数据)
回调,然后调用完成
回调。为什么要把它们放在两个不同的回调函数中?要在.each()之后运行getPermissions
?