在ajax调用之后调用对象返回

时间:2011-09-23 20:04:20

标签: jquery

我构建了以下对象:

 var cls = {
    offset : 0,
    onSuccess : function(data) {
        alert(this.offset);
    }
};

$(document).ready(function(){
    $("form").submit(function() {
              $.post(
                  "/ajax",
                  {},
                   cls.onSuccess
               );
     });
});

当ajax返回且onSuccess的{​​{1}}被调用时,我会收到cls的提醒。

如果我只是致电undefined,则提醒会返回预期的cls.onSuccess()。出现这种行为的原因是什么?

4 个答案:

答案 0 :(得分:2)

不要使用“这个”。它不会引用您期望引用的内容。

使用window.alert(cls.offset);

解释起来很长,但这应该对你有所帮助。

答案 1 :(得分:1)

this不再是您的对象cls了。您正在向函数调用传递函数引用onSuccess

答案 2 :(得分:1)

您需要为AJAX函数提供回调的上下文。我会使用.ajax()而不是.post()并将cls作为上下文传递:

$.ajax({
  url: "/ajax",
  context: cls,
  type: "POST",
  success: cls.onSuccess
});

答案 3 :(得分:0)

您只传递函数,与对象无关。如果你把它包装在一个函数中它应该工作:

$(document).ready(function(){
    $("form").submit(function() {
              $.post(
                  "/ajax",
                  {},
                   function(data){
                      cls.onSuccess(data);
                   }
               );
     });
});