我需要一个' loading'在Ajax调用期间显示的图标。我试过这个:How to show loading spinner in jQuery?
它无法正常工作。我没有在我的代码中直接调用 Ajax ,这是一个包含大量抽象和包装器的大型应用程序,所以通常我调用的函数调用函数调用$ .ajax(),然后调用已经有beforeSend和success属性设置 - 在我们的代码中,该函数被使用了数十次,我不想修改它。
ajaxSetup()是不是设计用于这种情况?如果是这样,那么在什么情况下它应该起作用?感谢。
答案 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);
};