2013-08-24 2 views
1

처음에 나는 나쁜 영어로 미안하다고 말하고 싶습니다. 구글 크롬, 모질라 파이어 폭스, 오페라jquery ajax 비동기 요청 오류

JQuery와 V2.0.0 마지막 버전

오늘은 문제

timer_multy_update = setInterval(
    function() 
    { 
     $.get(
      'test.php', 
      function (result){ 
       parseAndUpdateData(result); 
      }, 
      "json" 
     ); 
    }, 500) 

문제는 서버가 응답이 (내가 모르는 경우이다 있었다 방법 올바르게 말하십시오), 즉 서버가 응답 시간이 0.5 초 더 많아 지지만 타이머가 유지되지 않고 계속 요청을 보내면 서버 응답 전에 2-4 요청을 보낼 수 있습니다. 작은 시간, 그리고 이제 문제는 방화 광에서 모두 올바르게 요청하지만 변수 결과에는 서버의 첫 번째 응답에서 단 하나의 응답 만 포함됩니다. 어쩌면 내가 분명히 표현하지 않았을 것입니다. 서버에 대한 2-4 요청이 다른 대답을 반환한다고 말하고 싶지만, 결과는 서버에서 모든 2-4 배의 첫 번째 응답을 얻습니다. 그리고 그것은 큰 문제입니다.

인터넷에서 정보를 찾으려고 시도했지만 아무 것도 발견되지 않았습니다.

왜 처음에는 jquery에서 오류가 발생했는지, 소스 코드를 살펴보기 시작했으며 heder에 대한 언급과 해시에 대해 알게되었습니다. 그래서 난 내 스크립트를 변경하고 방법을 찾으려고

$.get 
(
    '/php/mine/update_cells.php', 
    't='+Math.random(), 
    function (result) 
    { 
     parseAndUpdateData(result); 
    }, 
    "json" 
); 

는 그래서 난이 또는 내 실수하고 이것은, 그것은 버그되지

+0

url은 자원이 브라우저에 의해 현금화되지 않도록마다 다릅니다. –

답변

0

을 이해하지, 지금에 버그를 원하는 제대로 작동 캐싱. 브라우저가 잠시 동안 자원을 캐시 한 다음 누군가가 원할 때마다 가져와야하는 것이 훨씬 효율적입니다. 정적 리소스, 즉 많이 변경되지 않지만 동일한 URL에 대해 다른 결과를 자주 반환하는 웹 서비스의 경우 캐싱을 사용하지 않도록 설정하는 것이 좋습니다. 서버 측 코드를 제어하는 ​​경우 Cache-Control: no-cache 헤더를 응답에 추가하십시오. jQuery에서 캐싱을 비활성화 할 수 있지만 알고있는 한 ajax() 함수를 사용해야합니다. get()을 사용하여 수행 할 방법이 없습니다. 당신이 인 Math.random을 추가하기 때문에

$.ajax({ 
    url: "/php/mine/update_cells.php", 
    success: function(result){ 
    parseAndUpdateData(result); 
    }, 
    cache: false, 
    dataType: 'json' 
}); 
+0

헤더를 추가했지만 효과가 없습니다. 'Accept : application/json, text/javascript, */*; q = 0.01,Accept-Encoding : gzip, deflate, sdch 캐시 제어 : no-cache 수락 언어 : ko-kr, 연결 : 연결 유지 쿠키 : id = Xb97FxROHEni7bGg; K = L4UHWE47zPhO2rEa 에서 Pragma : 노 캐시 사용자 에이전트 : 모질라/5.0 (윈도우 NT 5.1) AppleWebKit/537.36 (게코 같은 KHTML) 크롬/28.0.1500.95 사파리/537.36 X-요청-으로 : XMLHttpRequest' – user2713024

+0

두 번째 방법은 내 작업과 동일) /php/land/update_cells.php?_=1377328853001 캐시가있는 $ .ajax에 의해 보내집니다. false – user2713024

+0

@ user2713024 응답 헤더에 추가해야합니다. 요청 헤더처럼 보입니다. – RobH