我构建了以下对象:
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()
。出现这种行为的原因是什么?
答案 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);
}
);
});
});