使用object的方法作为$ .post的回调函数

时间:2010-04-16 10:22:18

标签: jquery

$。Comment = function(){       this.alertme =“警报!”;     }

$.Comment.prototype.send = function() {

  var self = this;
  $.post(
    self.url,
    {
      'somedata' : self.somedata
    },
    function(data, self) {
      self.callback(data);
    } 
  );

}

$.Comment.prototype.callback = function(data) {
  alert(this.alertme);
}

当我调用$ .Comment.send()时,调试器对我说self.callback(data) is not a function

我做错了什么?

谢谢

2 个答案:

答案 0 :(得分:2)

您不希望将self声明为成功函数的参数。如果删除该声明,您将获取本地变量,这是您想要的。 E.g:

$.Comment = function() {
    this.alertme = "Alert!";
}

$.Comment.prototype.send = function() {

    var self = this;
    $.post(
        self.url,
        {
            'somedata' : self.somedata
        },
        function(data) {         // <== removed `self` argument
            self.callback(data); // <== now sees `self` local var
        }
    );

}

$.Comment.prototype.callback = function(data) {
    alert(this.alertme);
}

答案 1 :(得分:0)

您不应将 self 声明为参数:

function(data) {
  self.callback(data);
} 

那样 self 将是一个闭包并引用函数中的正确对象。