开发者社区> 问答> 正文

怎样在jquery.ajax中执行当前函数的其他方法?

//简单的ajax表单提交
(function($,window,undefined){
    var ajaxForm=function(opts){
       var def={successLabel:'发送成功',url:'/user/check',dataType:'html'}
       this.form=$('#'+formid)||$('form');
       this.opts=$.extend({},def,opts);
       this.formdata=this.form.serialize();
    }
    //发送前执行
    ajaxForm.prototype.before=function(){
        this.submitButton=$form.find(':submit');
        this.submitButton.val('提交中...');
    }
    //请求成功回执函数
    ajaxForm.prototype.success=function(data){
        $('#message')=this.opts.successLabel;
    }
    //
    ajaxForm.prototype.send=function(){
        $.ajax({
            url:this.opts.url,//无错
            before:this.before,//引用ajaxForm.before方法
            success:this.success,//执行到这里错误,success内部this方法出错了
            type:'post',
            data:this.formdata
        })
    }

    window.ajaxForm=ajaxForm;
})(jQuery,window)

//实例
new ajaxForm().send();

以上执行,会提示this.opts.successLabel未定义,我知道当ajax引用this.success的时候,success内部this已经指向当前ajax对象了,请问各位老师,如何在ajax方法中,正确引用一个原型的方法呢?

展开
收起
云栖技术 2016-05-25 08:42:23 1858 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!
    var _this = this;
    $.ajax({
        type: this.opts.method,
        url: this.opts.url,
        dataType: this.opts.data_type,
        data: postdata,
        success: function() {
            _this.success.apply(_this, arguments);
        },
        error: function() {
            _this.error.apply(_this, arguments);
        }
    });
    2019-07-17 19:13:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载