2009-05-29 2 views
1

입력 양식에 XMLHttpRequest를 사용하여 입력 한 사용자 이름이 이미 사용되었는지 확인합니다. 스크립트는 정상적으로 실행되지만 요청을 제출할 때 약간의 시간 지연이 있음을 알 수 있습니다. 요청을 보낸 후 웹 페이지가 잠시 멈췄습니다.XMLHttpRequest 시간 지연을 줄이는 방법은 무엇입니까?

"백그라운드에서"요청을하고 프런트 엔드에서 지연을 발생시키지 않는 방법이 있습니까? 저는 Twitter의 구현을 좋아합니다 : 데이터베이스를 검색하는 동안 회전하는 모래 시계 아이콘을 보여줍니다. 비슷한 것을 얻으려면 어떻게해야합니까?

답변

7

비동기 XHR을 사용하려는 경우 - 현재 동기 요청을 수행 중이므로 페이지가로드가 완료 될 때까지 고정되어야합니다. 비동기 XHR은 사용자가로드 상태 업데이트를 제공하는 callbck 함수를 호출합니다.

메모리 방금 true 요청 비동기하게

xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4 && xhr.status === 200) loadFinished(); 
} 
xhr.open(requestType, url, true); 

을 할 필요가 제공하는 경우.

+0

고맙습니다! 이것은 완벽하게 작동합니다. – Yongho

1

XMLHttpRequest가 백그라운드에서 비동기 적으로 작동하도록 지정해야합니다. 그런 다음 사용자는 작업이 완료 될 때까지 계속 탐색 할 수 있도록 콜백 함수를 제공 할 수 있습니다.

많은 사이트는 작업이 돌아 오기를 기다리는 동안 애니메이션 GIF를 표시하기 만하면 사용자에게 뭔가있는 것처럼 보이는 느낌을 줄 수 있습니다. http://www.ajaxload.info/에서 AJAX 회전 인디케이터 중 하나를 쉽게 디자인하고 다운로드 할 수 있습니다.

+0

Errr no, 기본적으로 XHR은 * 동기 *로드를 기다리는 동안 차단됩니다. – olliej

+0

오른쪽 - 나는 당신이 논평하는 동안 그것을 고쳤다. 감사. – Ryan