2011-05-13 4 views
1

jQuery 및 setInterval을 사용하여 주어진 URL의 값을 주기적으로 반환하려고합니다. 내 코드는 다음과 같이 보입니다 :jQuery Ajax 및 setInterval Chrome 문제

$("form").submit(function() { 
     setInterval(function(){ 
      $('#upload_progress').load('/upload_progress'); 
     }, 5000); 
    }); 

이것은 Firefox에서 완벽하게 작동하지만 크롬에서는 load() 함수가 실행되지 않습니다. 나는 $ .ajax 함수를 사용하여 동일한 결과를 얻었습니다.

이것이 Chrome (v11.0)에만 영향을주는 이유는 무엇입니까?

도움이 될 것입니다.

+0

js 콘솔에 오류가 있습니까? – Lukas

+0

아니, 전혀 아냐. – ericalli

+0

왜 제출시 설정합니까? –

답변

0

하나는 실제로 양식을 제출하는 것입니다. 나는 이것이 브라우저가 "이봐, 서버에서 리디렉션을 기다리고있다"고 말했다고 확신한다. 페이지를 폴링하고 업데이트하려면 실제로 수행해야합니다.

$("form").submit(function(e) { 
    e.preventDefault(); 
    // ... 
} 

그냥 시작으로. 이 맥락에서, 그것은 나를 위해 작동합니다. 여기, 나는 심지어 당신에게 그것의 꽤 작은 JSFiddle을 만들었다 : http://jsfiddle.net/plukevdh/sRe4k/. 리디렉션이 완료되면 리디렉션이 필요한 경우 더 많은 데이터를 콜백 (json 또는 기타)에 추가하여 {status: 0-100 [percent], completed: true|false}을 확인하고 완료되었거나 상태> = 100이면 window.location 만 변경하면됩니다.

0

코드가 문서 검사 준비 상태로 포장되어 있습니까?

$(document).ready(function(){ 
    // your code 
}); 

그렇지 않은 경우 그 이유가있을 수 있습니다.

+0

예 setInterval 함수 이전에 다른 함수도 성공적으로 실행할 수 있습니다 (예 : 경고). – ericalli

+0

OK - 다른 원인으로 사용 권한이있을 수 있습니다. 이것이 로컬에서 실행되고 있습니까? 그렇다면 Chrome은 로컬 파일에 AJAX 호출을 허용하지 않습니다. 웹 서버에서 실행하는 것이 좋습니다. –