从jQuery中的ajax.success调用object的方法时出现问题

时间:2009-04-05 03:35:03

标签: javascript jquery

function modifyDatabase(tabla, id, objData, callback, arrayCallback){
    $.ajax({
        url: 'modifyDatabase.php',
        type: "POST",
        dataType: "json",
        data: 'tabla='+tabla+'&id='+id+strData,
        success: function(data){            
            callback(data);
        },
    });
}

var obj = {
    set: function (data){
        alert(this.var1);
    },
    var1: 100
}

function modifyDatabase('', '', '', obj.set, '');

运行时,我收到一条错误消息,告诉我this.var1未设置或未定义。如果我从其他地方调用该方法(而不是来自异步响应)它可以正常工作。

好像方法'set'不在'obj'中。

发生了什么事?

1 个答案:

答案 0 :(得分:2)

当您以这种方式传递对函数的引用时,它实际上也没有传递对该对象的引用。快速解决方法是创建一个匿名函数,通过闭包引用实际对象。以下是对其无效的原因的详细说明:http://bitstructures.com/2007/11/javascript-method-callbacks

简而言之,您需要这样做:

function modifyDatabase('', '', '', function(){obj.set();}, '');