在 jQuery Ajax 中,beforeSend
是一个回调函数,它在 Ajax 请求发送之前被调用。通常用于设置自定义头部、显示加载动画或执行其他预处理操作。
当在 beforeSend
中执行动画时,默认情况下 Ajax 请求不会等待动画完成就会立即发送。这是因为:
beforeSend
回调本身是同步执行的beforeSend
完成后会立即发送请求$.ajax({
url: 'your-url',
beforeSend: function(xhr) {
var dfd = $.Deferred();
$('#loading').fadeIn(500, function() {
dfd.resolve();
});
return dfd.promise();
},
success: function(data) {
$('#loading').fadeOut();
// 处理返回数据
}
});
var xhr = null;
function makeRequest() {
$('#loading').fadeIn(500, function() {
xhr = $.ajax({
url: 'your-url',
success: function(data) {
$('#loading').fadeOut();
// 处理返回数据
}
});
});
}
// 调用函数
makeRequest();
async function sendRequestWithAnimation() {
await new Promise(resolve => {
$('#loading').fadeIn(500, resolve);
});
try {
const response = await $.ajax({
url: 'your-url'
});
// 处理响应
} finally {
$('#loading').fadeOut();
}
}
sendRequestWithAnimation();
以上方法都能确保动画完全显示后再发送 Ajax 请求,根据你的项目环境和需求选择最适合的方案。
没有搜到相关的文章