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"
});
Ответы
Ответ 1
Вы хотите асинхронный (по умолчанию). Браузер ограничивает вас двумя запросами в любой момент времени. Это часть спецификации HTTP. (спецификация HTTP 1.1, раздел 8.1.4)
Внесение запросов в очередь - ваш лучший вариант.
Я должен заметить, что это можно переопределить в Firefox и, возможно, в некоторых других браузерах. (но поскольку он не является стандартным, вам это не поможет)
Ответ 2
Браузеры ограничивают вас двумя одновременными запросами. Возможно, вы захотите использовать диспетчер очереди, например:
http://www.protofunc.com/scripts/jquery/ajaxManager/