1

웹 응용 프로그램 내에서 jQuery 모바일을 사용하고 있습니다. 나는 사용자에게 물레와 메시지를 표시하거나 숨이 두 가지 기능을 사용아약스 호출에로드 메시지가 표시되지 않습니다.

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를 호출합니다.

예를 들어 사람들 목록에서, 목록 요소를 클릭하면 아약스로 사람들 세부 정보를 얻을 수 있습니다. 내 문제는 아마도 JQM (및 장치) 속도가 느려서 로딩 메시지가 나타나지 않는다는 것입니다. 즉, 장치가 메시지를 표시하기 전에 AJAX 응답을받을 수 있습니다. 그러나 사용자 클릭에서 정보 표시까지 3-5 초 가량 걸립니다. 이 시간 동안 아무 일도 일어나지 않으며, 이것은 내가 피하고 싶은 것이어야합니다. 누구에게 해결책이 있습니까?

+0

아약스 호출 코드도 게시 할 수 있습니까? – BenSorter

답변

0

이것은 아주 길기 때문에 한 가지 설명해 드리겠습니다. 9 개월 동안 사용하지 않으면 돌아 왔습니다. 그러나 이것과 비슷한 것은 작년에 문제였습니다. 그리고 나서이 문제를 해결했습니다.

웹킷 브라우저로 작업 할 때 setTimeout 또는 serInterval을 사용하여 jQuery Mobile AJAX 로더를 트리거해야합니다. 예를 들어

:

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

한 두 번째는 충분하다. 또한 내 나이가 answer 또는 this 1을 살펴보십시오. 기본적으로 저는 이것이 이것을 오늘날에도 여전히 문제가되는지 모르기 때문에 중복으로보고하고 싶지 않습니다. 이 솔루션이 작동하는지 또는하지 않는지에 대한 의견을 남겨주세요.

+0

나는 당신의 힌트, Gajotres와 함께 노력했다. setTimeout (function() {...})이 실행되기 전에 서버에서 응답을받습니다. 제 생각에 문제는 jQM이 너무 느리다는 것입니다. 효과적으로 더 빨리 달릴 수있는 방법이 있습니까? 간단한 html로 간단한 접을 수있는 요소를 열 때까지 2 ~ 3 초가 소요됩니다 (Ajax 또는 javascript 글꼴 없음). – Ferex

관련 문제