标题几乎说了。如何在AJAX运行时添加加载屏幕,并在AJAX运行完毕后使加载屏幕消失?
我的AJAX功能:
$("#loginBtn").on("click", function(e){
e.preventDefault();
var loginForm = document.getElementById("loginForm");
var login_data = $('#loginForm').serialize();
$.ajax({
type: "POST",
url: serverURL + "loginProcess.php",
data: login_data,
dataType:"json",
success: function(data){
localStorage.setItem('id', JSON.stringify(data));
},
error: function(jqXHR, textStatus, errorThrown) {
navigator.notification.alert('Invalid Email or Password!',null,'Error', 'Done');
}
});
});
注意:我没有使用jQuery Mobile。
答案 0 :(得分:5)
要在每个ajax调用上全局显示加载页面,您可以使用以下代码:
$( document ).ajaxStart(function() {
$( "#loading" ).show();
});
并在ajax调用停止时隐藏它
$( document ).ajaxStop(function() {
$( "#loading" ).hide();
});
你需要一个带有id加载的全屏div,以及一个加载图像gif或类似的东西
答案 1 :(得分:1)
请勿忘记使用async:true
并使用$.mobile.loading("show");
进行装载显示
jQuery.ajax({
url: serverURL + "loginProcess.php",
global: true,
type: "POST",
data: login_data,
dataType:"json",
async: true,
timeout: 40000,
beforeSend: function() {
$.mobile.loading("show");
},
complete: function(){
$.mobile.loading("hide");
},
success: loading_complete_list,
});
答案 2 :(得分:0)
您可以使用jQuery BlockUI插件
您的代码将是
var blockUI = function(){
$.blockUI({
fadeIn: 1000,
timeout: 0,
message:'<h1>Loading...</h1>',
//css: { border: '5px solid red'},
onBlock: function() {
$("#tab3").addClass("myClass");
}
});
}
答案 3 :(得分:0)
$("#loginBtn").on("click", function(e){
e.preventDefault();
var loginForm = document.getElementById("loginForm");
var login_data = $('#loginForm').serialize();
$.ajax({
type: "POST",
url: serverURL + "loginProcess.php",
data: login_data,
dataType:"json",
beforeSend:function(){
blockUI(); //Call block function
},
success: function(data){
localStorage.setItem('id', JSON.stringify(data));
},
error: function(jqXHR, textStatus, errorThrown) {
navigator.notification.alert('Invalid Email or Password!',null,'Error', 'Done');
}
});