Javascript 在另一个函数中运行函数,但仅在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

我有一个在另一个函数中运行的函数,但有时我对服务器的ajax调用似乎在调用该函数之前还没有完成

    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