如何在Phonegap中进行AJAX调用时添加加载屏幕?

时间:2015-02-19 05:22:47

标签: javascript jquery ajax cordova

标题几乎说了。如何在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。

4 个答案:

答案 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');  
    }
  });