Я не уверен, действительно ли это будет возможно, так как load() - это асинхронный метод, но мне нужно каким-то образом загрузить несколько небольших бит страниц, по одному, получить некоторые данные, включенные в них через JavaScript, а затем отправить их через Ajax, чтобы я мог поместить его в базу данных, которую я сделал.JQuery - Looping a .load() внутри оператора 'for'
В основном я получаю это с моей страницы, где все ссылки я буду с перебирать расположены:
var digiList = $('.2u');
var link;
for(var i=0;i<digiList.length;i++){
link = "http://www.digimon-heroes.com" + $(digiList).eq(i).find('map').children().attr('href');
до сих пор так хорошо.
Теперь мне нужно загрузить каждую ссылку (только конкретный div полной страницы, а не все) в div, который у меня есть где-то вокруг моей страницы, чтобы я мог получить некоторые данные через JQuery :
var contentURI= link + ' div.row:nth-child(2)';
$('#single').load('grabber.php?url='+ contentURI,function(){
///////////// And I do a bunch of JQuery stuff here, and save stuff into an object
///////////// Aaaand then I call up an ajax request.
$.ajax({
url: 'insertDigi.php',
type: 'POST',
data: {digimon: JSON.stringify(digimon)},
dataType: 'json',
success: function(msg){
console.log(msg);
}
////////This calls up a script that handles everything and makes an insert into my database.
}); //END ajax
}); //END load callback Function
} //END 'for' Statement.
alert('Inserted!');
Естественно, как и следовало ожидать, загрузка занимает слишком много времени, а остальные заявления для просто продолжает идти до конца, на самом деле не заботясь о позволяя закончить нагрузки до этого дело, так как нагрузки является асинхронным. Предупреждение ('Вставить!'); вызывается, прежде чем я получаю возможность загрузить самую первую страницу. Это, в свою очередь, означает, что я только загружаю материал в свой div, прежде чем я могу даже обработать его информацию и отправить ее моему сценарию.
Итак, мой вопрос: есть ли какой-то творческий способ сделать это таким образом, чтобы я мог перебирать несколько ссылок, загружать их, заниматься своим делом с ними и делать с ними? А если нет, есть ли синхронная альтернатива загрузке, которая может вызвать примерно такой же эффект? Я знаю, что это, вероятно, полностью заблокирует мою страницу, но с ней все будет в порядке, поскольку страница не требует от меня ввода.
Надеюсь, я объяснил все с необходимой деталью, и, надеюсь, вы, ребята, можете мне помочь в этом. Благодаря!
No. Вы забыли дать HTML. –
Я не думаю, что это придало бы контекст моей конкретной проблеме, в данном случае. Я отдельно тестировал все на своем скрипте, и все работает нормально. Я могу получить данные, и я могу получить их в моей базе данных. Моя проблема заключается не в самой странице, а в том, чтобы заставить оператор «for» дождаться завершения функции обратного вызова .load() до продолжения и увеличения его переменной Iterator. –
Вы действительно хотите, чтобы они запускались один за другим? или все они могут прыгать вместе? –