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

Discussion in 'Создание расширений для Joomla' started by Schemer, Jan 18, 2009.

  1. Schemer
    Offline

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

    Joined:
    Nov 26, 2007
    Messages:
    49
    Likes Received:
    1
    Gender:
    Male
    Надеюсь, что мне кто-нибудь и что-нибудь подскажет или хотя бы посоветует, потому как долбаюсь уже несколько дней и все безрезультатно, возможно я чего-то не допонимаю.

    Итак, так сказать, обстоятельсва вынудили сесть за написание собственного компонента под 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пециалист <=

    Joined:
    Apr 13, 2007
    Messages:
    3,685
    Likes Received:
    101
    Gender:
    Male
    Не подумай, что флудер. Но я вроде как на этом форуме считаюсь модером этой ветки. Исторически сложилось.

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

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

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

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

    Joined:
    Nov 26, 2007
    Messages:
    49
    Likes Received:
    1
    Gender:
    Male
    Dead Krolik, спасибо за ответ.

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

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

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

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

    Joined:
    Dec 8, 2007
    Messages:
    5
    Likes Received:
    1
    еще полезно прочитать -
    http://docs.joomla.org/How_Joomla_pieces_work_together
     
    Dead Krolik likes this.
  6. Schemer
    Offline

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

    Joined:
    Nov 26, 2007
    Messages:
    49
    Likes Received:
    1
    Gender:
    Male
    earx, спасибо, это я уже читал. Но мне легче было разобраться, читая мануэл на родном, русском, к примеру вот этот - http://kjoomla.com/lessons/35-lessons/45-lesson1.html
    Видать, это блог кого-то из Джумловских гуру. =) Очень классно написано.
     
  7. Dead Krolik
    Offline

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

    Joined:
    Apr 13, 2007
    Messages:
    3,685
    Likes Received:
    101
    Gender:
    Male
  8. Offline

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

    Joined:
    Mar 2, 2009
    Messages:
    30
    Likes Received:
    0
    Gender:
    Male
    Подскажите пожалуйста. как победить ошибку:

    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 Недавно здесь

    Joined:
    Mar 2, 2009
    Messages:
    30
    Likes Received:
    0
    Gender:
    Male
    Свою ошибку я нашел ...

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

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

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

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

Share This Page

Loading...