jQuery ajaxsetup无法正常工作

时间:2011-11-14 13:47:40

标签: javascript jquery

我需要一个' loading'在Ajax调用期间显示的图标。我试过这个:How to show loading spinner in jQuery?

它无法正常工作。我没有在我的代码中直接调用 Ajax ,这是一个包含大量抽象和包装器的大型应用程序,所以通常我调用的函数调用函数调用$ .ajax(),然后调用已经有beforeSend和success属性设置 - 在我们的代码中,该函数被使用了数十次,我不想修改它。

ajaxSetup()是不是设计用于这种情况?如果是这样,那么在什么情况下它应该起作用?感谢。

1 个答案:

答案 0 :(得分:1)

我正在使用它,我调用了很多Ajax函数,并且想要一个加载器来显示。如果您使用下面的代码,原始成功函数将被保存,然后从设置中删除,因为我们想要隐藏成功对话框。然后在这个成功函数中,我们调用已保存的成功函数,该函数已添加到我们的设置中(已删除)。

// Backup original ajax, which is used at the bottom
var _ajax = $.ajax;

// Now overwrite it with our own function
$.ajax = function (properties) {

    // Save the original success function
    var successFunction = properties.success;
    delete properties.success;

    var _error = $.noop;
    // Save error function
    if (properties.error) {
        _error = properties.error;
        delete properties.error;
    }

    // TODO :: OPEN YOUR LOADER HERE

    // Default settings
    var settings = {
        url: "ajax.html",
        data: data,
        async: true,
        success: function (response) {

            // TODO :: CLOSE YOUR LOADER HERE

            successFunction.call(this, response);
        },
        error: function (xhr, textStatus, thrownError) {
            // TODO :: CLOSE YOUR LOADER HERE

            // Call error
            _error.call(xhr, textStatus, thrownError);
        }
    };

    // Extend with own properties
    $.extend(settings, properties);

    // Do the request
    _ajax(settings);
};