2013-11-23 107 views
0

搜索了近2天,無法找到合適的答案。JqueryMobile加載器/微調器,同時加載另一頁

我正在開發一個Jquery Mobile頁面。目前我有2個JQuery Mobile頁面。當頁面啓動時,它會顯示一個按鈕。點擊按鈕將向服務器發送SOAP請求以獲得響應。收到響應後,將顯示第二頁。

SOAP請求可能需要至少3到5秒。在那段時間裏,我想在頁面中間顯示一個加載器/微調器,直到我得到服務器的響應。怎麼做?以下是我使用的代碼。含

<form name="frm_login" action="" method="post"> 
    <div id='pg_login' data-role="page"> 
    <div data-role="content"> 
     <input type="submit" name="btn_login_submit" id="btn_login_submit" value="Login" /> 
    </div> 
    </div> 

    <div id='pg_menu' data-role="page"> 
    <div data-role="header" data-position="fixed"> 
     <h1>Welcome</h1> 
    </div> 
    </div> 
</form> 

Javascript代碼2頁如下

$(document).ready(function() { 
    $('form').submit(function(e){ 
    e.preventDefault(); 
    var xmlRequest = getXmlRequest(); 
    loadingStart(); 
    $.soap({ 
     url: 'full wsdl url', 
     method: 'getUserName', 
     data: xmlRequest, 
     success: function(xmlResponse) { 
     loadingEnd(); 
     $.mobile.changePage('#pg_menu'); 
     }, 
     error: function(xmlResponse) { 
     } 
    }); 
    return false; 
    }); 
}); 

function loadingStart(){ 
    $.mobile.loading('show', { 
    text: "loading", 
    textVisible: true 
    }); 
} 

function loadingEnd(){ 
    $.mobile.loading("hide"); 
} 

我還留着5秒的睡眠時間爲測試目的而WSDL功能

HTML文件。

加載程序不顯示。請讓我知道這裏出了什麼問題。

問候 梅萊

+1

1)'form'應該被封裝在'data-role = page'中,而不是相反。 2)不要在jqm中使用'.ready()'。 http://jsfiddle.net/Palestinian/4a6SH/ – Omar

+0

爲什麼我們不應該使用。就緒()內JQM? – Malaiselvan

+1

重要提示:使用的$(document).bind( 'pageinit'),而不是$(文件)。就緒() 你的jQuery學習的第一件事就是調用代碼$(文件)。就緒()函數內部使一旦DOM被加載,所有東西都會執行。然而,在jQuery Mobile的,阿賈克斯被用作導航到每一頁的內容裝入DOM和DOM準備處理程序只執行了第一頁。要在加載並創建新頁面時執行代碼,可以綁定到pageinit事件。該事件在本頁面的底部詳細說明。 – Omar

回答

0

的問題是因爲jQuery的SOAP插件(http://plugins.jquery.com/soap/)的

後,我改變本地AJAX的事情開始工作的罰款與下面的代碼。

$(document).ajaxStart(function() { 
    $.mobile.loading('show', { 
    text: "loading...", 
    textonly: false, 
    textVisible: true, 
    theme: 'a', 
    html: "" 
    }); 
}); 

$(document).ajaxStop(function() { 
    $.mobile.loading('hide'); 
});