Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.11.2010, 02:13
Кандидат Javascript-наук
Отправить личное сообщение для abc_ua Посмотреть профиль Найти все сообщения от abc_ua
 
Регистрация: 20.05.2010
Сообщений: 105

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 раз ощутимо ускорило работу скрипта.

Последний раз редактировалось abc_ua, 12.11.2010 в 02:24.
Ответить с цитированием
  #12 (permalink)  
Старый 12.11.2010, 03:08
Интересующийся
Отправить личное сообщение для Bercut Посмотреть профиль Найти все сообщения от Bercut
 
Регистрация: 10.11.2010
Сообщений: 22

вы что, гугл парсите ))
у вас $("div.inf").html(list); каждый раз заменяет содержимое "div.inf"

делайте list += yourSuperGreatVar;
а уже в последней итерации $("div.inf").html(list);
Ответить с цитированием
  #13 (permalink)  
Старый 12.11.2010, 14:51
Кандидат Javascript-наук
Отправить личное сообщение для abc_ua Посмотреть профиль Найти все сообщения от abc_ua
 
Регистрация: 20.05.2010
Сообщений: 105

я так и хочу, но как передать в list значение из get'a? вот тут проблема. Можно ли как-то onload использовать?

P.S.
Цитата:
вы что, гугл парсите
вставляя в get адрес сайта, на котором не находится скрипт, запрос не выполняется.

Последний раз редактировалось abc_ua, 12.11.2010 в 15:01.
Ответить с цитированием
  #14 (permalink)  
Старый 12.11.2010, 20:57
Интересующийся
Отправить личное сообщение для Bercut Посмотреть профиль Найти все сообщения от Bercut
 
Регистрация: 10.11.2010
Сообщений: 22

ну вы бы сами подумали

// глобальная переменная
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;
Ответить с цитированием
  #15 (permalink)  
Старый 13.11.2010, 22:03
Кандидат Javascript-наук
Отправить личное сообщение для abc_ua Посмотреть профиль Найти все сообщения от abc_ua
 
Регистрация: 20.05.2010
Сообщений: 105

Спасибо!!!!!! Переписал скрипт, на счет вывода в определенном порядке как раз искал решение, тоже подумал создать массив но $("div.inf").html(list); не хочет выводить массив list[i], т.е. придется создавать цикл и пробегать все значения.

P.S. почему innerHTML в этом случае не работает, а только .html?
Ответить с цитированием
  #16 (permalink)  
Старый 13.11.2010, 23:16
Интересующийся
Отправить личное сообщение для Bercut Посмотреть профиль Найти все сообщения от Bercut
 
Регистрация: 10.11.2010
Сообщений: 22

идите курить мануалы
за вас и так почти всё сделали
Ответить с цитированием
  #17 (permalink)  
Старый 04.01.2011, 14:25
Новичок на форуме
Отправить личное сообщение для kurtsvl Посмотреть профиль Найти все сообщения от kurtsvl
 
Регистрация: 27.05.2010
Сообщений: 1

масло масляное ,что за привычка посылать на ... людей которые задают вопрос,зачем форум тогда ??


$.ajax({
      
         url : 'mypage.php',	   
       type : 'post',
      error :  helloError,            //  обработчик в случае неудачи
   success :  helloCallback,       //   обработчик в случае успеха
                                           // первым аргументом в него передаются принятые данные
 dataType : 'text',                   // тип принимаемых данных
        data: { name  : value  }  //  передаваемые на сервер значения  

});
 

});

Последний раз редактировалось kurtsvl, 04.01.2011 в 14:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить функцию при запуске увидеть ГЛОБАЛЬНУЮ переменную? возжаждавший Элементы интерфейса 8 23.02.2017 01:27
как передать переменную в функцию Virgile Общие вопросы Javascript 2 08.08.2010 22:50
Как передать переменную? bgdankrlchuk Events/DOM/Window 3 10.06.2010 10:33
Как передать переменную с текстом по событию FRIE jQuery 8 20.04.2010 13:03
Как передать переменную в handleServerResponse Motoko AJAX и COMET 2 17.07.2009 11:04