jQuery: возможно ли одновременное выполнение запросов AJAX? - PullRequest
21 голосов
/ 22 мая 2009

Я использую jQuery, чтобы попытаться получить несколько фрагментов данных одновременно. Основанием для требования является то, что разным битам данных требуется разное время, чтобы стать доступными, поэтому я хочу отображать каждый фрагмент по мере его возврата.

Проблема в том, что запросы кажутся «очередью»; следующий запрос не отправляется до тех пор, пока не вернется предыдущий. После подробного прочтения мне кажется, что мне может понадобиться опция «async: false», но, похоже, это не имеет значения.

Из отладки TCP / IP я вижу, что браузер не инициирует более одного соединения; он использует то же соединение, когда предыдущий запрос вернулся.

В свое время я видел много сайтов, которые одновременно загружают данные через ajax, так что, очевидно, это возможно, но я рву голову, пытаясь заставить это работать.

Вот мой код:

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

Ответы [ 2 ]

16 голосов
/ 22 мая 2009

Вы хотите асинхронный (который используется по умолчанию). Браузер ограничивает вас двумя запросами в любой момент времени. Это часть спецификации HTTP. ( HTTP 1.1 спецификация, раздел 8.1.4 )

Размещение запросов в очереди - ваш лучший вариант.

Я должен отметить, что это может быть переопределено в Firefox и, возможно, в некоторых других браузерах. (но так как это не стандартно, вам это мало поможет)

3 голосов
/ 22 мая 2009

Браузеры ограничивают вас двумя одновременными запросами. Вы можете использовать менеджер очередей, например так: http://www.protofunc.com/scripts/jquery/ajaxManager/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...