Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.02.2012, 11:52
Новичок на форуме
Отправить личное сообщение для prophet Посмотреть профиль Найти все сообщения от prophet
 
Регистрация: 23.02.2012
Сообщений: 1

Вызов методов объекта подгружаемого по ajax
Не получается найти ответа, наверное из-за незнания как нормально сформулировать вопрос.

задача такая. есть 2 кнопки: comments, add_comments.
нажимаю на первую - по ajax подгружаются комментарии и показываются на экране под фоткой.
нажимаю на add_comments - происходит всё тоже самое, только ещё показывается формачка для ввода комментария и устанавливается на неё фокус.

в чём проблема. ajax - асинхронный, поэтому нельзя сделать такую конструкцию:
comments = ajax_comments(photoid);
comments.toggle();
и
comments = ajax_comments(photoid);
comments.add_comment_form();

надо ведь как-то дождаться, чтобы сначала комментарии по ajax подгрузились, а потом уже вызывать методы toggle и add_comment_form

тогда сделал вот так:
comments = ajax_comments({photo: photoid, onLoad: function() {this.toggle()});

так вроде нормально, но что делать, когда комментарии уже подгрузились? то есть объект с подгруженными комментариями лежит в некотором массиве и при необходимисти я его достаю оттуда по photoid.

тогда делаю такой трюк:
comments = ajax_comments({photo: photoid, command: function() {this.toggle()});
по сути ничего не изменилось, только название метода поменялось - с onLoad на command, то есть теперь этот метод вызывается не только при загрузке но и при каждом обращении в функции ajax_comments (новый ли объект создаётся и подгружается по ajax и после вызывается command, или берётся уже готовый объект).
Но тут опять проблема. А если объект уже создался, но не подгрузился по ajax? или противоположный случай: запоминаю объект, только после того как данные подгрузятся по ajax, но тогда если несколько раз нажать на кнопку, то могут вызываться несколько лишних ajax запросов.

И потом как всё таки быть с такой конструкцией:
comments = ajax_comments();
comments.toggle();
получается, что все команды над ajax объектом должны быть заблокированы до тех пор пока его данные не подгрузятся.

Я так понимаю что такие проблемы уже давным давно решили и придумали какой-нибудь шаблон проектирования для этого. Только вот я никак не могу найти куда копать. Подскажите пожалуйста.

В терминологии может тоже ошибиться. Тут под "ajax-объект"-ом я имею в виду обыкновенных javascript object, данные которого подгружаются через ajax. ну а проблема в том что методы работы с ним должны быть доступны только после того как данные подгрузились
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов конкретной функции класса на php AJAX запросом Slavenin AJAX и COMET 8 03.06.2011 22:47
Вызов функции печати страницы полученной через AJAX Garik AJAX и COMET 4 02.03.2011 17:05
Передача объекта в ajax -> success tazododu AJAX и COMET 4 05.11.2010 18:46
Вызов функции вне html объекта arwprod jQuery 25 05.10.2010 00:14
AJAX, вызов из метода обьекта Logo Общие вопросы Javascript 4 20.06.2009 23:35