如何将变量传递给ajax成功函数,就像在ajax调用时那样?

时间:2013-01-13 16:42:39

标签: jquery ajax variables scope

所以这是我的ajax调用(非常标准的jQuery,但是使用了couchdb jquery库,http://daleharvey.github.com/jquery.couch.js/):

var stuff = "some stuff";
$.couch.db("test_db").create({
    success: enyo.bind(this, function (data) {
        console.log(stuff);
    })
});
stuff = "a change in stuff";

我希望console.log的输出是“某些东西”而不是“改变东西”。

执行此操作的方法越多越好,因为我认为某些方法可能需要我不使用“enyo.bind”(http://enyojs.com/),但也许我可以用这些方法完成同样的事情

3 个答案:

答案 0 :(得分:1)

你可以使用它的功能。

var create = function (stuff) {
  $.couch.db("test_db").create({
    success: enyo.bind(this, function (data) {
      console.log(stuff);
    })
  });
};

create(stuff);

或者,它等同于匿名函数。

!function(stuff) {
  $.couch.db("test_db").create({
    success: enyo.bind(this, function (data) {
      console.log(stuff);
    })
  });
}(stuff);

请参阅What does the exclamation mark do before the function?

答案 1 :(得分:0)

您可以通过执行以下操作“锚定”变量:

(function(varname) {
    // code that relies on varname
})(varname);

答案 2 :(得分:0)

var stuff = "some stuff";
var callback = (function(stuff){ 
    return function(data){ console.log( stuff ) }; 
}(stuff));

$.couch.db("test_db").create({
    success: enyo.bind(this,  callback );
});
stuff = "a change in stuff";