2014-12-24 3 views
0

У меня есть этот простой код для получения элементов из внешнего источникаMultiple XHR OnLoad

for(var i=0; i<10; i++) 
    loadPage(link[i]); 

function loadPage(href) 
{ 
    var ajax = new XMLHttpRequest(); 
    ajax.open('get',href); 
    ajax.responseType = 'document'; 
    ajax.onreadystatechange=function() 
    { 
     console.log(ajax.responseXML.querySelectorAll("a[href^='magnet']")[0].getAttribute("href")); 
    } 
    ajax.send(); 
} 

, но когда я прочитал консоль я получаю только 2 или 3 результат вместо 10. Я думаю, это потому, что я не могу запускать многократную загрузку. Как я могу это исправить?

ответ

0

В зависимости от нагрузки вы имеете в виду несколько ajax.send? это, скорее всего, не проблема.

Возможно, только что возвращенный ajax не возвращает то, что соответствует вашему селектору (магниту), или что ваш сервер не отвечает должным образом ко всем запросам? замените консоль.log на простой console.log («Здесь будут драконы»);

Если вы ajax извлекаете страницы с того же сервера, вы должны проверить журналы, сколько запросов у вас есть, и если вы всегда отвечаете правильно. Некоторые серверы возвращаются с ошибкой 50 раз, когда слишком много запросов параллельно или помещают контрольную точку в вашу функцию loadPage, паузы будет достаточно, чтобы сервер мог обрабатывать все во времени.

+0

Вы правы. Я получаю много 503 ошибок, поэтому я думаю, что это проблема. Теперь я должен справиться с этим. Есть идеи? – user215023

+0

Это нормально, чем серверные блоки или очереди, когда слишком много запросов от одного и того же IP (например, для предотвращения DoS). Что касается того, почему это происходит и как настраивать, это вопрос сервера, вы можете попросить новый – Xavier

 Смежные вопросы

  • Нет связанных вопросов^_^