Joomla 1.5 Использование ajax в собственном компоненте

Тема в разделе "Создание расширений для Joomla", создана пользователем Schemer, 18.01.2009.

  1. Schemer
    Offline

    Schemer Недавно здесь

    Регистрация:
    26.11.2007
    Сообщения:
    49
    Симпатии:
    1
    Пол:
    Мужской
    Надеюсь, что мне кто-нибудь и что-нибудь подскажет или хотя бы посоветует, потому как долбаюсь уже несколько дней и все безрезультатно, возможно я чего-то не допонимаю.

    Итак, так сказать, обстоятельсва вынудили сесть за написание собственного компонента под Joomla 1.5. И в компоненте придется использовать технологию ajax. Все бы хорошо, вроде разобрался с Моделью-Представление-Контроллер. Но вот как прикрутить аякс, не понимаю...

    Итак, попробую объяснить суть проблемы.

    У меня сейчас получается следующее:
    - через Представление я генерирую некую HTML страницу, в которую вставляются данные из базы, которые получаны через обработку в Модели.
    - некие действия на странице запускают функцию javascript, в которой с помощью объекта XMLHTTPRequest формируется запрос к серверу. И тут у меня начали возникать проблемы... каким должен быть этот запрос, где и как его подхватить, как вернуть ответ.

    Перерыв кучу информации в гугле я сделал таким образом, запрос в javascript выглядит так:
    Код (CODE):
    1. function getXmlHttp(){
    2.   var xmlhttp;
    3.   try {
    4.     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    5.   } catch (e) {
    6.     try {
    7.       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    8.     } catch (E) {
    9.       xmlhttp = false;
    10.     }
    11.   }
    12.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    13.     xmlhttp = new XMLHttpRequest();
    14.   }
    15.   return xmlhttp;
    16. }
    17.  
    18. function open_date(id) {
    19.     var xmlhttp = getXmlHttp()
    20.     xmlhttp.open('GET', 'index.php?option=com_comname&view=newviev&id=1', true);
    21.     xmlhttp.onreadystatechange = function() {
    22.         if (xmlhttp.readyState == 4) {
    23.             if(xmlhttp.status == 200) {
    24.                 alert(xmlhttp.responseText);
    25.             }
    26.         }
    27.     };
    28.     xmlhttp.send(null);
    29. }


    alert(xmlhttp.responseText); - это для теста, просто хочу видеть, что возвращает сервер.

    Далее, в своем компоненте я создал новое представление с именем, соответственно newview. Поидее оно должно получать обработанные данные из Модели и возвращать их в скрипт. Нужную переменную из зпроса получаю с помощью метода - JRequest::getVar('id', 0, '', 'array'); Но как, как их черт возьми вернуть в скрипт, я не понимаю... :)

    Во всех мануэлах по разработке компонентов под Joomla 1.5 в представлении стоит метод parent::display($tpl);, который возвращае шаблон. А мне то нужно вернуть определенные данные, которые получены из Модеи.

    Примерно понятно, что я хочу? :)

    Уважаемые гуру, хоть что-нибудь мне подскажите, может быть я изначально что-то не правильно делаю или не правильно понимаю?
     
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Не подумай, что флудер. Но я вроде как на этом форуме считаюсь модером этой ветки. Исторически сложилось.

    Но помочь не шибко могу.

    Во-первых я бы порекомендовал использовать простейшую обертку на аяксом, типа sack. Сам пользуюсь - не нарадуюсь.

    Во-вторых "вернуть в скрипт" - тебе надо их передать своему яваскрипту или тупо вывести юзеру? Если второе, то просто echo.
     
  4. Schemer
    Offline

    Schemer Недавно здесь

    Регистрация:
    26.11.2007
    Сообщения:
    49
    Симпатии:
    1
    Пол:
    Мужской
    Dead Krolik, спасибо за ответ.

    Нет, нужно вернуть именно в свой скрипт.

    Вообще, на самом деле, я уже разобрался. Буквально вот вчера. Использовал библиотеку xajax. В качестве основного пособия к действию использовал вот это - http://lurm.net/?content/ajax

    И у меня получился очень классненький компонентик, реализовал с помощью аякса все, что хотел. =)
     
  5. Offline

    earx Недавно здесь

    Регистрация:
    08.12.2007
    Сообщения:
    5
    Симпатии:
    1
    еще полезно прочитать -
    http://docs.joomla.org/How_Joomla_pieces_work_together
     
    Dead Krolik нравится это.
  6. Schemer
    Offline

    Schemer Недавно здесь

    Регистрация:
    26.11.2007
    Сообщения:
    49
    Симпатии:
    1
    Пол:
    Мужской
    earx, спасибо, это я уже читал. Но мне легче было разобраться, читая мануэл на родном, русском, к примеру вот этот - http://kjoomla.com/lessons/35-lessons/45-lesson1.html
    Видать, это блог кого-то из Джумловских гуру. =) Очень классно написано.
     
  7. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
  8. Offline

    OlegKor Недавно здесь

    Регистрация:
    02.03.2009
    Сообщения:
    30
    Симпатии:
    0
    Пол:
    Мужской
    Подскажите пожалуйста. как победить ошибку:

    Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?
    URL: /usr/local/www/vhosts/MyProbeSite/administrator/components/com_umcit/library/xajax/xajax_js/xajax_core.js

    Судя по указанному в URL: пути ... все правильно. Именно здесь находится <xajax_core.js> И как я понимаю именно его система не может загрузить.
     
  9. Offline

    OlegKor Недавно здесь

    Регистрация:
    02.03.2009
    Сообщения:
    30
    Симпатии:
    0
    Пол:
    Мужской
    Свою ошибку я нашел ...

    Похоже что суть этого в пути к загружаемым джаваскриптам... А точнее. нельзя в конструкции подключения скриптов использовать (указывать) серверный путь
    Что то типа вот такого ...
    Код (CODE):
    1. $xajax->configure("javascript URI", JPATH_SITE.DS.'libraries/xajax/');

    ЭТО ОШИБКА.
    -----------------------
    Путь должен быть относительным
    где то так ...
    Код (CODE):
    1. $xajax->configure("javascript URI", '/libraries/xajax/');

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

    Жаль что об этом ни слова в документации. Отсутствие какого-либо документирования, порождает только потерю времени и сотнепостовые нити в форумах.
     

Поделиться этой страницей

Загрузка...