2009-05-22 2 views
21

jQuery를 사용하여 여러 데이터 조각을 동시에 검색하려고합니다. 요구 사항의 배경은 데이터의 다른 비트가 사용 가능하기 위해 다양한 길이의 시간이 걸리므로 각 조각을 반환 할 때이를 표시하려고합니다.jQuery : 동시 아약스 요청을하는 것은 가능합니까?

문제는 요청이 '대기열'인 것처럼 보입니다. 다음 요청은 이전 요청이 리턴 될 때까지 수행되지 않습니다. 폭넓게 읽은 후에는 'async : false'옵션을 사용하는 것이 좋을지 모르지만 이는 별 차이가없는 것 같습니다.

TCP/IP 디버그에서 브라우저가 둘 이상의 연결을 시작하지 않는다는 것을 알 수 있습니다. 이전 요청이 리턴 될 때 동일한 연결을 사용합니다.

저는 아약스를 통해 동시에 데이터를로드하는 많은 사이트를 보았습니다. 분명히 가능할 수도 있지만, 내 머리를 찢어서이 작업을 시도하고 있습니다. 당신은 (기본값) 비동기를 원하는

$.ajax({ 
    type: "GET", 
    async: false, 
    url: "foo1.php" 
    }); 
$.ajax({ 
    type: "GET", 
    async: false, 
    url: "foo2.php" 
    }); 
$.ajax({ 
    type: "GET", 
    async: false, 
    url: "foo3.php" 
    }); 
+4

문서를 보지 못한 이유는 무엇입니까? 당신은 당신이 사용하는 모든 옵션의 의미를 찾았어야합니다. 'async : false'는 여러분이 묘사하고있는 것의 _opposite_입니다. –

답변

16

:

여기 내 코드입니다. 브라우저는 주어진 시간에 두 가지 요청으로 사용자를 제한합니다. 이것은 HTTP 스펙의 일부입니다. (HTTP 1.1 specification, section 8.1.4)

요청을 대기열에 넣는 것이 가장 좋습니다.

Firefox 및 다른 일부 브라우저에서는이 기능을 재정의 할 수 있습니다. (하지만 표준이 아니기 때문에 많은 도움이되지 않습니다)

+18

감사합니다. 내가 문제가없는 곳을 더 이상 보지 않게했다. 이것은 PHP와 세션의 잠금으로 인해 동일한 세션 변수를 사용하는 요청을 순차적으로 처리하는 방식과 관련되어 있습니다 (전체 실행 중에 대신 쓰기가 잠겨 있지 않은 이유는 광기입니다). 어쨌든, 아주 간단한 'session_write_close()'가 모든 것을 고쳤습니다. 건배. –

+0

어쨌든 알아두면 좋을 것 같습니다. 그것에 대한 참조를 게시 할 수 있습니까? – cgp

+3

@Monty PHP 문제와 session_write_close()를 지적하는 멋진 작업 - 나를 위해 일했습니다 - 감사합니다! – JoshuaDavid

3

브라우저는 2 개의 동시 요청을 제한합니다. 다음과 같이 큐 관리자를 사용할 수 있습니다. http://www.protofunc.com/scripts/jquery/ajaxManager/

+2

브라우저 동작이 정상적으로 작동합니다. PHP가 '오류'였습니다. –

관련 문제