2013-07-09 3 views
1

채팅 응용 프로그램을 만들려고하는데, 나는 항상 서버 정보를 받아야합니다. 요청이 완료 될 때,의에 :자바 스크립트 xmlhttprequest 항상

http.onreadystatechange=function(){ 

그래서, 다시 함수에 다른 통화를 보류했습니다

request(); 

그런 다음 모든 루프에서 발생합니다. 문제는 Google 크롬에서만 작동한다는 것입니다. 익스플로러와 파이어 폭스, 그럼 그냥 아무 이유없이 :(구글 크롬에서

function request() 
{ 
    var get; 
    if (window.XMLHttpRequest) 
    { 
     get = new XMLHttpRequest(); 
    } 
    document.getElementById("request_status").innerHTML = "requests: "+requests; 
    get.onreadystatechange=function() 
    { 
    if (get.readyState==4 && get.status==200) 
     { 
     requests+=1; 
     request(); 
     } 
    } 
    get.open("GET","request.php",true); 
    get.send(); 
} 

를 들어, 100 회 등의 반환()를 호출 유지의 get.onreadystatechange=function() 때까지 기다리지 마십시오 '요청'4 당처럼 성장 초. 익스플로러와 파이어 폭스에서 그들은 초당 200처럼 성장, 그래서 뭔가 잘못입니다!

+1

봐. 캐시 된 결과가 표시됩니까? – Quentin

+0

캐싱을 위해 +1. 나는 jsFiddle을 만들었습니다. http://jsfiddle.net/UkYBG/4/ IE에서 302 응답의 경우'요청 '이 매우 빠르게 증가합니다 – Olegas

답변

-1

함수의 끝에서, 당신은 지속적으로 MS에서 지정된 시간 후에 함수를 호출하는 setTimeout(functionHere(), timeInMilisHere)를 사용하는 것이 좋습니다

+0

하지만 끝나면 부름을하면 시간이 필요 없습니다. 함수는 가능한 최대 속도로 호출됩니다. – user2563125

+0

시간이 필요 없다는 것은 무엇을 의미합니까? 시간이 지났을 때 함수에 어떤 영향을 미쳤습니까? – BrotherBallan

+0

간격을두고 함수를 호출 할 때 지연을 사용할 필요가 없습니다. 왜냐하면 이미 완료 될 때 호출하기 때문입니다. 그래서'request(); 대신에' – user2563125

0

익스플로러를 확인할 수는 없지만이 피들에서 Firefox를 사용하면 예를 들어 작동합니다. http://jsfiddle.net/ZHdgb/1/

저에게는 효과적 일지 모르지만 이러한 동기식 요청을 한 번에 하나씩 실행 해보십시오. 아래를 참조

변경

get.open("GET","request.php",true);

사람 : 개발자 도구에서 인터넷 탭에서

get.open("GET","request.php",false);

관련 문제