Подтвердить что ты не робот

JQuery: Выполнение одновременных запросов ajax, возможно ли это?

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

Проблема заключается в том, что запросы кажутся "queue"; следующий запрос не возвращается до тех пор, пока предыдущий не вернется. После обширного чтения кажется, что опция "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"
    });
4b9b3361

Ответ 1

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

Внесение запросов в очередь - ваш лучший вариант.

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

Ответ 2

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