2010-05-17 2 views
1

jqtouch/jquery를 사용하여 iPhone 오프라인 웹 애플리케이션을 작성하려고합니다. 연결을 비활성화하면 jquery .load() 함수가 자동으로 실패하고 콜백 함수를 호출하지 않는 것처럼 보입니다. $.ajaxSetup ({cache: true});을 설정했지만 효과가없는 것 같습니다. 나 또한 내 매니페스트 파일 등 잘 작동 - 유일한 문제는 .load() 함수입니다.오프라인 일 때 JQuery .load() 함수가 자동으로 실패합니다.

아이디어가 있으십니까?

+0

JQTouch 오프라인 디버거 확장 프로그램을 사용해 보셨습니까? 자세한 내용은 http://code.google.com/p/jqtouch/wiki/OfflineSupport를 참조하십시오. – smountcastle

+0

나는 이것을 시도했지만 캐시가 채워지고 있다는 것을 알려주지 만 세부 사항은 없다. – edoloughlin

답변

0

.load()가 GET이 아닌 POST를 수행하는 것으로 인해 캐시를 건너 뛴다는 것을 알았습니다.

는 내가 두 번째 빈 배열이 올바른 호출했다 가정

$.('#some-element').load('path/to/data', 
         [], 
         function(responseText, status, XMLHttpRequest) { 
          alert("Load finished: " + status + ". " + responseText); 
         } 
         ); 

로 불리는, 그러나 이것은 JQuery와 제로 인수 아마도 게시물을했다. GET에 대한 올바른 호출은 다음과 같습니다.

$.('#some-element').load('path/to/data', 
         function(responseText, status, XMLHttpRequest) { 
          alert("Load finished: " + status + ". " + responseText); 
         } 
         ); 
0

올바른 MIME 형식으로 매니페스트 파일을 제공하고 있습니까? JQTouch Offline Support에서 :

또한, 매니페스트 당신이 htaccess로 지시문을 가장 서버에서 수행 할 수있는 텍스트/캐시 mainfest의 MIME 타입, 와 함께 제공해야

:

AddType text/cache-manifest .manifest

<html manifest="sample.manifest">
0 : 캐시 매니페스트을 구현하려면 단순히 이처럼 HTML에서 참조
+0

예. 앱에 대한 다른 모든 것은 완벽하게 오프라인으로 작동합니다. 내 유일한 문제는 .load() 함수가 자동으로 실패하고 해당 콜백을 호출하지 않는 것입니다. – edoloughlin

0

로컬 파일은 HTTP 상태 코드로 0을 반환합니다. 이것은 HTTP로 검색되지 않기 때문입니다 (로컬입니다!). jQuery는 이것을 오류로 취급하는데, 반드시 나쁜 것은 아닙니다.

oncomplete 처리기를 사용하여 두 상태 코드를 모두 가져 와서이를 0과 비교하고 응답 텍스트를 읽으려고합니다.

window.navigator.online (onLine?)을 테스트하여 오프라인 상태인지 확인할 수도 있습니다 (상태 코드 0은 오프라인 일 때만 발생해야하기 때문에).

+0

위의 내 대답보기 - jQuery가 POST를 실행하는 것으로 나타났습니다. – edoloughlin

관련 문제