2014-04-01 4 views
1

나는 phonegap을 사용하여 앱을 제작했으며, 필요한 모든 데이터를 얻기 위해 ajax를 사용하여 서버와 통신했습니다. 페이지 중 일부는로드하는 데 몇 초가 걸립니다 (모든 페이지가로드 될 때까지 페이지가 표시되지 않음). 그리고 클라이언트가 서버와 통신하고 모든 데이터를 처리하는 동안로드되는 화면을 표시하고 싶습니다.Phonegap synchronous ajax call

아약스 호출을 함수에 던지기 전까지는 모든 것이 훌륭하게 작동했습니다. (몇 명의 팀원과 작업 중이므로 일부 아약스 호출을 사용하는 것이 더 쉽다고 생각했습니다. 좋은 기능). 이제 ajax 함수가 비동기이기 때문에 요청 처리가 완료되기 전에 로딩 화면이 켜지거나 꺼집니다. 내 함수에서 코드 실행을 중단하여 (경고와 유사) 모든 ajax 호출이 완료된 후 로딩 화면이 꺼 지도록하고 싶습니다.

는 기본적으로 내 자바 스크립트 코드는 다음과 같이 할 :

로딩() 로딩 화면을 표시
loading(); 
sendRequests(); 
notLoading(); 

및 notLoading()는 로딩 화면이 꺼집니다. 내 sendRequests() 함수는 각 페이지마다 다릅니다. 각 페이지는 페이지의 기능에 따라 다른 요청을 보내야합니다.

loading() 및 notLoading() 함수의 모양이 궁금하면 여기 이동

// functions to make loading screen appear and disappear 
function loading() { 
    document.getElementById("blackout").style.display = 'block'; 
} 
function notLoading() { 
    document.getElementById("blackout").style.display = 'none'; 
} 

나는 그 두 개의 링크가 기본적으로 당신에게 사에게 그것을

How to wait for ajax request to complete in javascript when synchronous option is not available? http://www.hunlock.com/blogs/Snippets:_Synchronous_AJAX

에 대해 몇 가지 다른 게시물로 보았다 내 정보, request.open()의 세 번째 매개 변수를 false로 설정해야 함 ... 잘 시도했지만 작동하지 않음 =/

여기 내 getRequest() 기능을 사용하면 누구나 내가 무엇을하려고하는지 볼 수 있습니다.

// will send a GET request to the parameter url 
function getRequest(url) { 
    var req = new XMLHttpRequest(); 
    req.open('GET', url, false); 
    setHeaders(req); 

    req.onreadystatechange = function() { 
     if (req.readyState == 4) { 
      if((req.status == 200) || (req.status == 0)) { 
       if((typeof req.responseText != "undefined") && (req.responseText != "")) { 
        localStorage["request"] = req.responseText; 
       } 
       else { 
        alert("GR: Error talking to the server"); 
       } 
      } 
      else { 
       alert("GR: Error talking to server"); 
      } 
     } 

    } 

    req.send(null); 
    return parseJSON(); 
} 

내가 어떻게이 문제를 해결할 수 있는지 알면, 나는 매우 감사 할 것입니다!

답변

0

결국 sendRequests() 함수의 모든 종료 상태에서 notLoading() 함수를 던졌습니다. 일종의 통증이지만 지금은 효과가있는 것 같습니다.