【问题标题】:How to extend jQuery's AJAX function如何扩展jQuery的AJAX功能
【发布时间】:2014-03-27 17:31:55
【问题描述】:

我已经尝试过创建自己的 jquery 函数,这是通过

$.fn.extend({
    myFunc: function () {

    }
});

但是,在网上搜索并寻找答案后,我想问一下:

如何扩展 $.ajax()

$.ajax的新实现可以通过运行来使用

$.ajax({

}).done(function (e) {

}).fail(function (e) {

});

我想做的是添加一个.progress(),这样我就不必总是写了

$.ajax({
    url: path,
    xhrFields: {
        onprogress: function (e) {
            if (e.lengthComputable) {
                console.log(e.loaded /e.total * 100 + '%');
            }
        }
    }
});

每次我想监控进度。例如

$.ajax({
    url: '/somewhereorother',
    type: 'post',
    dataType: 'json'
}).progress(function (e) {
    updateProgressBar(e.percentage + '%');
}).done(function (e) {

}).fail(function (e) {

});

【问题讨论】:

标签: javascript jquery ajax extend


【解决方案1】:

$.ajax 是附加到$ 对象的函数。

因此,要扩展它,您必须将引用存储在某处,并在需要时调用它,例如:

var ajax = $.ajax;
$.ajax = function()
{
     if (!arguments[0].success)
     arguments[0].success = function()
     {
          window.alert('done!');
     }

     ajax.apply(ajax, arguments);
}

这是一个概念(我不确定应用中的 this 范围 - 必须实际运行它);)另外,我会说它的做事方式非常丑陋。

如果您希望您的$.ajax 功能与官方功能不同,我仍然会将其分开。通过$.my_ajax 或通过单独的命名空间(查看http://api.jquery.com/jquery.sub/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-07
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多