var list = ""; $.get("ссылка", function (data) { // загружает страницу $(".class", data).each(function () { // выбирает адреса ссылок из меню $.get("ссылка 2", function (data) { // загружает страницу по адресу из меню $(".class2", data).each(function () { //выбирает нужные данные ... }); $("div.inf").html(list); // вывод данных }); }); }); Хотел запросы сделать последовательно, сформировав в первом массив из адресов и передать во второй запрос, идея глупая, но было поздно и голова не соображала. Сейчас проблема все еще актуальна, только для переменной list, чтобы $("div.inf").html(list); выполнить только 1 раз требуется иметь вне get'a значение list. Ссылок много, поэтому вмешательство в DOM всего 1 раз ощутимо ускорило работу скрипта. |
вы что, гугл парсите ))
у вас $("div.inf").html(list); каждый раз заменяет содержимое "div.inf" делайте list += yourSuperGreatVar; а уже в последней итерации $("div.inf").html(list); |
я так и хочу, но как передать в list значение из get'a? вот тут проблема. Можно ли как-то onload использовать?
P.S. Цитата:
|
ну вы бы сами подумали
// глобальная переменная var list = ""; // счётчик загрузки всех ваших запросов var readyCounter = 0; $.get("ссылка", function(data) { var classData = $(".class", data); // так понимаю, что тут у вас набор тегов <a/> classData.each(function(i) { $.get($(this).attr('href'), function (data) { $(".class2", data).each(function () { //тут происходит запись в глобальный list list += this.innerHTML; }); // наращиваем счётчик readyCounter++; onLoadRequest(); // проверяем, что сейчас отрабатывает последний колбэк ваших запросов if(readyCounter == classData.length) { onLoadOfAllRequests(); } }); }); }); function onLoadRequest() { // здесь также доступен ваш list } function onLoadOfAllRequests() { $("div.inf").html(list); alert('YYEEEAAAAHHHH!!!'); } и надеюсь вы понимаете, что get запросы отправятся в той последовательности, в которой вы получили ссылки, но их колбеки будут вызываться в совершенно другой. если ваш list должен сохранить оригинальную последовательность, то он должен быть объектом с таким добавлением записей list[i] = this.innerHTML; |
Спасибо!!!!!! Переписал скрипт, на счет вывода в определенном порядке как раз искал решение, тоже подумал создать массив но $("div.inf").html(list); не хочет выводить массив list[i], т.е. придется создавать цикл и пробегать все значения.
P.S. почему innerHTML в этом случае не работает, а только .html? |
идите курить мануалы
за вас и так почти всё сделали |
масло масляное ,что за привычка посылать на ... людей которые задают вопрос,зачем форум тогда ??
$.ajax({ url : 'mypage.php', type : 'post', error : helloError, // обработчик в случае неудачи success : helloCallback, // обработчик в случае успеха // первым аргументом в него передаются принятые данные dataType : 'text', // тип принимаемых данных data: { name : value } // передаваемые на сервер значения }); }); |
Часовой пояс GMT +3, время: 03:37. |