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

发布于 2022-08-28 23:27:39 字数 1088 浏览 8 评论 0

//简单的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方法中,正确引用一个原型的方法呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南薇 2022-09-04 23:27:39

找到方法了,谢谢关注!

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);
    }
});
扬花落满肩 2022-09-04 23:27:39

ajaxForm.prototype.send=function(){
$.ajax({
url:this.opts.url,//无错
before:this.before,//引用ajaxForm.before方法
success:this.success.bind(this),//执行到这里错误,success内部this方法出错了
type:'post',
data:this.formdata
})
}

bind : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文