2011-04-14 2 views
0

오프라인으로 사용할 수있는 iPad 응용 프로그램처럼 보이는 웹 앱을 작성하려고합니다. 이렇게하려면 브라우저에 매니페스트 등을 사용하여 파일을 캐시하도록 지시합니다. XML을 ajax하려고하면 처음에는 작동하지만 이후에는 실패합니다. 웃긴 점은 "실패"하지만 xhr.responseXML이 맞다는 것입니다!XML이 캐시 된 경우에만 Safari에서만 Ajax 요청이 실패합니다.

이것은 Safari에서만 Windows 또는 iPad에서 발생하는 문제입니다. 문제는 캐시의로드에서만 나타납니다. 처음에는 모든 것이 잘 작동합니다.

thrownError는 "", xhr.status는 0, xhr.statusText는 "오류"입니다.

$.ajax({ 
    type: "GET", 
    url: "data.xml", 
    dataType: "xml", 
    success: function(xml) { 
     do_stuff(xml); 
    }, 

    error: function (xhr, ajaxOptions, thrownError) { 
     do_stuff(xhr.responseXML); // Why does this work? 
    } 
}); 

아이디어가 있으십니까? 가장 좋은 추측은 XML이 잘못된 MIME 유형으로로드되고 있다는 것입니다.

답변

0

페이지가 처음로드 될 때 data.xml은 아직 캐시에 없으므로 ajax 호출이 서버로 직접 이동합니다. 캐시 매니페스트에 나열된 xhr 요청에 대한 URL을 가지고 있기 때문에 브라우저는 비 xhr 요청을 만들어 캐시에 저장합니다. 후속 페이지로드는 캐시에서로드되고 비 xhr 요청을 리턴합니다.

non-xhr 요청으로 data.xml에 액세스 할 수 있고 표시된 데이터가 포함되어 있는지 확인하십시오.

관련 문제