2014-02-06 2 views
0

이것은 XML 문서에서 텍스트를 검색하는 데 사용하는 간단한 함수입니다. 모든 브라우저에서 완벽하게 작동하지만 iPad의 Safari에서는 자주 (항상 그런 것은 아닙니다) 실패합니다. 실패하면

, 그것은 메시지 리소스를로드 할 수 없습니다

412 상태 코드를 반환 : 서버 (412)의 상태로 응답 (전제 조건 실패).

다른 테스트가 유선 연결을 통해 수행되는 동안 iPad에서 테스트 중일 때 무선으로 작동합니다. 나는 내 전화에서도 그것을 시도했지만 아무런 문제가 없었다. 오류가 발생한다는 사실은 가끔 어떤 종류의 경쟁 조건이나 타이밍 문제와 관련이 있는지 궁금하게 만듭니다. 그러나 여기서 완전히 손실됩니다.

function getText(page, ID){ 
    if(languageText == null){ 
     url = directory + "/text/" + language + "/text.xml"; 
     $.ajax({ 
      url: url, 
      type: "post", 
      dataType: "xml", 
      async: false, 
      success: function(data, status, jqXHR){ 
       console.log(data); 
       languageText = $(data); 
      }, error: function(jqXHR, textStatus, errorThrown){ 
       console.log(errorThrown); 
       console.log(jqXHR); 
      } 
     }); 
    } 
    var selector = "page[id='" + page + "'] text[id='" + ID + "']"; 
    result = languageText.find(selector).text(); 
    return result; 
} 
+0

소스 파일은 자바 스크립트 측면에서 이에 대한 – chings228

답변

0

은 mod_security 문제처럼 보입니다.

당신의 .htaccess 파일에 넣고 :

<Files text.xml> 
SecFilterInheritance Off 
</Files> 
1

또 다른 문제는 데이터가 변경되지 않은 경우 304 (변경되지 않음) 대신 상태 코드 412가 포함 된 게시물 요청에 응답하는 것일 수 있습니다 (이 점을 지적하면 http://avnwx.blogspot.co.at/2011/10/debuggers-lie.html에게 감사드립니다).

모든 게시물 요청이 다른지 확인하려면 단순히 게시 된 데이터가 아닌 ajax 요청의 URL에 '?uuid=' + new Date().getTime() 을 추가하십시오.

예 요청 :

jQuery.ajax({ 
    cache: false, 
    data: { 
     start: 1, 
    }, 
    url: 'http://127.0.0.1/test.php?uuid='+new Date().getTime(), 
    success: function(){ alert('success'); } 
} 
+0

많은 감사를 XML 헤더 당신이 JQuery와 아약스 호출에서 데이터 유형을 사용하지 막을 수 , 및 디코딩 XML을 포함하지 않을 수 있습니다! – 11teenth