1

我在我的web-app中使用jQuery手機。我使用這兩個函數來顯示和隱藏紡車和消息給用戶:無法在ajax調用上顯示加載消息

function showScreenMsg(msg,text_only) { 
    $.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only}); 
} 

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

//AJAX CALL 
function show_dtl(element,id){ 
showScreenMsg('loading',false); 

var details; 
$.ajax({ 
     async:false, 
     url:'./shyne/ajax/show_dtl.php', 
     data: {user_dtl_id:id}, 
}).done(function(data) 
     { 
      if (data){ 
       data = $.parseJSON(data); 
       details = data; 
       details = formatDetails(details); 
       hideScreenMsg(); 
      } 
     }  
    ); 
if(details){return details;} 
} 

我Ajax調用之前調用showScreenMsg適當的參數,當阿賈克斯成功我打電話hideScreenMsg。

我這樣做,例如在一個人的列表中,通過點擊列表元素,您可以通過ajax獲取人員詳細信息。 我的問題是,也許是因爲JQM(和設備)緩慢加載消息不會出現,我的意思是,也許我可以在設備可以顯示消息之前得到ajax答案。然而,從用戶點擊3-5秒鐘到顯示信息。在此期間沒有任何反應,這應該是我想避免的。 有沒有人有解決方案?

+0

你可以發佈ajax調用的代碼嗎? – BenSorter

回答

0

這是一個遠射,所以讓我解釋一件事,我在閒置9個月後回到這裏。但是這樣的事情去年是一個問題,而我現在解決了這個問題。

出於某種原因,使用web-kit瀏覽器時,必須使用setTimeout或serInterval來觸發jQuery Mobile AJAX加載器。

例如:

setTimeout(function(){ 
    $.mobile.loading('show',{ text:msg, textVisible:true, theme:'b', textonly:text_only}); 
}, 1); 

一秒就足夠了。也看看我的老一套answerthis一。基本上我不想報告這是重複的,因爲我不知道這是否今天仍然是一個問題。請留下評論告訴我,如果這個解決方案工作或不。

+0

我嘗試了你的暗示,Gajotres。會發生什麼是在執行setTimeout(function(){...})之前,我從服務器接收到一個答案。我認爲問題在於jQM太慢了。有沒有辦法有效地讓它跑得更快?它甚至需要2-3秒才能打開一個簡單的可摺疊元素,其中包含簡單的html(沒有Ajax或javascript花哨腳本)。 – Ferex