我正在尝试将变量传递到done回调中,但是没有任何运气。

var getDataForCompany = function(company_id) {

    $.ajax({
      type: "post",
      url: url,
      data:{
        company_id: company_id
      }

    }).done(function(returnedData, textStatus, jqXHR) {

      anotherFn(company_id);
      //need to access company_id here, but it is undefined


    });

};


我尝试将整个AJAX请求包装在IIFE中,以尝试关闭以捕获我的company_id,但是

var getDataForCompany = function(company_id) {

    ($.ajax({
      type: "post",
      url: url,
      data:{
        company_id: company_id
      }

    }).done(function(returnedData, textStatus, jqXHR) {

      anotherFn(company_id);
      //need to access company_id here, but it is undefined


    })(company_id);

};


也没有工作。这不是正确的方法吗?

最佳答案

如注释中所述,匿名完成函数应具有对通过getDataForCompany调用传递的company_id的引用。它在传入时可能只是未定义的。下面的代码类似于ajax调用的闭包设置。如果运行该方法,将看到将记录company_id。

var getDataForCompany = function(company_id) {

    var done  = function() {
        console.log(company_id)
    }

    done();
};





getDataForCompany("ID")
>>"ID"
getDataForCompany()
>>undefined

09-17 12:30