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

Jquery 在ajax调用后调用对象返回,jquery,Jquery,我构建了以下对象: var cls = { offset : 0, onSuccess : function(data) { alert(this.offset); } }; $(document).ready(function(){ $("form").submit(function() { $.post( "/ajax", {},

我构建了以下对象:

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

$(document).ready(function(){
    $("form").submit(function() {
              $.post(
                  "/ajax",
                  {},
                   cls.onSuccess
               );
     });
});
当ajax返回并调用
cls
onSuccess
时,我会收到
未定义的警报


如果我只调用
cls.onSuccess()
,则警报将返回
0
ex预期值。这种行为有什么原因吗?

这不再是你的目标,
cls
。您正在向post调用传递函数引用,
onSuccess

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

不要使用“this”。它不会引用您希望引用的内容

使用窗口警报(cls偏移量)

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

不要使用“this”。它不会引用您希望引用的内容

使用窗口警报(cls偏移量)


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

您只传递函数,与对象无关。如果将其包装在函数中,则应能正常工作:

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

您只传递函数,与对象无关。如果将其包装在函数中,则应能正常工作:

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

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

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

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

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