Php 完成$.ajax请求时显示进度图像
我有以下代码:Php 完成$.ajax请求时显示进度图像,php,jquery,ajax,javascript,dom,Php,Jquery,Ajax,Javascript,Dom,我有以下代码: data = new FormData($('#form')[0]); $.ajax({ type: 'POST', url: 'systems/createpostsystem.php', data: data, cache: false, contentType: false, processData: false }).done(function(data) { alert(data); window.loca
data = new FormData($('#form')[0]);
$.ajax({
type: 'POST',
url: 'systems/createpostsystem.php',
data: data,
cache: false,
contentType: false,
processData: false
}).done(function(data) {
alert(data);
window.location = "myposts.php";
});
我使用了$.ajaxStart()
,但它没有实现我想要的功能
我还尝试了success:function(){my code}
并提出了两次请求
现在,我想在这个AJax完成时显示一个进度图像。您只需在执行AJax请求之前编辑DOM,添加加载程序,然后在
complete
回调中删除它。我通常使用jQuery回调函数,而不是XHR对象回调
请注意:
- 只有当请求成功完成时才会调用
回调(以及success
XHR回调)done
- 即使请求失败,
(以及complete
XHR回调)也将始终调用始终
function addLoader() {
var img = $('<img />', {
id: 'loader',
src: '/path/to/your/loader.gif'
});
img.appendTo($('body'));
}
function removeLoader() {
$('#loader').remove();
}
addLoader(); // here the we add our loader
data = new FormData($('#form')[0]);
$.ajax({
type: 'POST',
url: 'systems/createpostsystem.php',
data: data,
cache: false,
contentType: false,
processData: false,
complete: function() {
removeLoader(); // here we remove it
},
success: function(data) {
alert(data);
window.location = "myposts.php";
}
});
var formData = new FormData($('#form')[0]);
var imageContainer = $('#selector');
imageContainer.attr('src', 'path/to/loading.gif');
$.ajax({
type: 'POST',
url: 'systems/createpostsystem.php',
data: formData,
success: function(data) {
// Do something
}
});
函数addLoader(){
var img=$('
在执行ajax功能之前添加加载图像(我假设是gif)。成功后,删除图像并替换为所需内容(成功图像、服务器返回的数据等)
例如:
function addLoader() {
var img = $('<img />', {
id: 'loader',
src: '/path/to/your/loader.gif'
});
img.appendTo($('body'));
}
function removeLoader() {
$('#loader').remove();
}
addLoader(); // here the we add our loader
data = new FormData($('#form')[0]);
$.ajax({
type: 'POST',
url: 'systems/createpostsystem.php',
data: data,
cache: false,
contentType: false,
processData: false,
complete: function() {
removeLoader(); // here we remove it
},
success: function(data) {
alert(data);
window.location = "myposts.php";
}
});
var formData = new FormData($('#form')[0]);
var imageContainer = $('#selector');
imageContainer.attr('src', 'path/to/loading.gif');
$.ajax({
type: 'POST',
url: 'systems/createpostsystem.php',
data: formData,
success: function(data) {
// Do something
}
});
您尝试了什么?。刚刚编辑了我的问题,可能重复了调用AJAX时显示“加载图像”并将其隐藏在“.done()”上。这是一种简单的方法。