如何从jquery ajax成功内部调用父母方法



可能的重复项:
jquery从父级引用此内容

这是我在这里的第一篇文章。问题 - 如何从 ajax-success 调用警报?

var page = {
    alerts: function (json) {
        if (json == 'us') { alert("blablabla") } else {
            alert(json.login);
        }
    },
    ajax: function (obj) {
        $.ajax({
            type: 'post',
            url: './scripts/serv.php',
            dataType: 'json',
            data: { object: $.base64.encode(JSON.stringify(obj)) },
            success: function (json) {
// how to call from here alerts(json)?? this.alerts(json) - doesn't
// work only page.alerts(json) but i think its wrong way.
            },
            error: function (json) {
                alert('ajax failed');
            }
        })
    }
}

您应该在 AJAX 请求之前存储对此的引用,因为success是从不同的范围调用的。

例:

var page = {
    alerts: function(json){
        if (json=='us'){ alert("blablabla")} else{
        alert(json.login); }
    },
    ajax: function(obj){
        var me = this;
        $.ajax({
            type:'post',
            url:'./scripts/serv.php',
            dataType:'json',
            data:{object:$.base64.encode(JSON.stringify(obj))}, 
            success: function(json){
                // how to call from here alerts(json)?? this.alerts(json) - doesn't work only page.alerts(json) but i think its wrong way.
                me.alerts(json);
            },
            error: function(json){
                alert('ajax failed');
            }
        }); 
    }
};
    var page={
alerts: function(json){
    if (json=='us'){ alert("blablabla")} else{
    alert(json.login); }
},
ajax: function(obj){
     var that = this;    <!-- PARENT OBJECT REFERENCE -->
            $.ajax({
                    type:'post',
                    url:'./scripts/serv.php',
                    dataType:'json',
                    data:{object:$.base64.encode(JSON.stringify(obj))}, 
        success: function(json){
          that.alerts(json)   <!-- USE THAT -->
        },
        error: function(json){
            alert('ajax failed');
        }
}) 
} }

最新更新