Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 4662 Просмотров
*

Enxiro

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • http://gildman.ru
Здравствуйте.
Уже приходилось написать модуль + компонент с использованием AJAX.
Но там была ситуация что запрос посылался от модуля компоненту при помощи следующей строки:
Код
jQuery.getJSON('index.php?option=com_ajaxsearch&task=loadsections&no_html=1', {section_id: _this.value}, function(data){
if(getCategories(data)) jQuery('select#categories').removeAttr('disabled');
    });
Т.е. чтоб работал модуль был специально создан компонент ajaxsearch в который и отправлялся запрос (в файл ajaxsearch.php).

Теперь задача.
Есть компонент com_zakaz. В нём соответственно файл zakaz.php из которого нужно послать AJAX запрос в другой файл.
Как синтаксически будет это выглядеть?
строку: index.php?option=com_zakaz&task=loadsections&no_html=1
соответственно нельзя использовать, т.к. запрос придёт на тот же файл zakaz.php

И кстати где расположить сам файл обработки запроса? во фронт части или в админ части компонента?
спасибо.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
не знаю насколько это правильно, но я делаю так:
Код: php
JResponse::clearHeaders();
JResponse::setHeader('Content-Type', 'text/xml; charset=utf-8');
JResponse::setBody( '<myxml />' );

echo JResponse::toString();

jexit();

соответсвенно если это модуль то в запрос добавляем какуюнить переменную, скажем mymode=ajax, и if ( JRequest::getCmd('mymode') == 'ajax' ) { бла бла бла}
а если это компонент - то работаем с task или controller.

И еще, какого [censored] у тебя там делает jquery? жалко потратить 10 минут на чтение доков по AJAX mootools'а ?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
верней это для модуля так, а с компонентом все проще...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
Как синтаксически будет это выглядеть?
для Joomla 1.5 используйте format=raw
Код
index.php?option=com_zakaz&amp;task=loadsections&amp;format=raw
в контроллере нужно создать метод loadsections и соответственно определять task в точке входа. А что там будет в методе это уже дело ваше.
Небольшие примеры с AJAX можете глянуть у меня (ссылка в подписи)
*

Enxiro

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • http://gildman.ru
Поясню ещё раз структуру компонента и как я делаю.
У компонента по сути есть 2 php файла:
zakaz.php - фронт часть (components/com_zakaz/zakaz.php)
admin.zakaz.php - админская часть (administrator/components/com_zakaz/zakaz.php)

Надеюсь не будете меня сильно ругать и счиатать нубасом, но никаких контроллеров не делал, т.е. файлы php - обычные файлы php не наследующие не от чего.

Решил отправлять запрос в тот же файл откуда он пришел строкой
Код
index.php?option=com_zakaz&amp;task=loadsections&amp;no_html=1
Обрабатываю так:
Код
if($task)
{
    //  пришел AJAX запрос. обрабатываю. возвращаю JSON
}
else
{
   // обычный php. формирует страницу
}

Теперь проблема:
Если работаю с фронт частью (zakaz.php) всё работает хорошо.
Если работаю с админ частью (admin.zakaz.php) то при AJAX запросе возвращается вся страница. ПОЧЕМУ так? и как это исправить безо всяких контроллеров и видов?

P.S. всё равно есть модуль работающий на jQuery поэтому его и использую для AJAX. А разбираться с mootools очень не хочется ибо в дальнейшем врядли пригодится, а прогаю под Joomla очень редко и вообще не люблю.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Если работаю с админ частью (admin.zakaz.php) то при AJAX запросе возвращается вся страница. ПОЧЕМУ так? и как это исправить безо всяких контроллеров и видов?

я уже написал решение)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

Enxiro

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • http://gildman.ru
если вы про format=raw то не помогает.
я ведь во фронт точно такой же запрос отправляю и всё правильно приходит..
а в админку когда - не работает..
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
этого не достаточно - передается компонент без модулей, но с хидером.
избавиться от него можно только добавлением &format=raw (или &no_html=1)
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
избавиться от него можно только добавлением &format=raw (или &no_html=1)
точно? у меня с xAjax'ом работает так
*

Enxiro

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • http://gildman.ru
кабздец. щас с ума сойду.
Для фронт (zakaz.php) и для админ (admin.zakaz.php) используется один и тот же запрос
Код
jQuery.getJSON('index.php?option=com_zakaz&amp;task=loadcity&amp;no_html=1', {region_id: _this.value}, function(data){//обработка}
По факту (смотрю в FireBug) запрос идёт
из фронт:
http://j_form/index.php?option=com_zakaz&amp;task=loadcity&amp;no_html=1&region_id=3352
из админ:
http://j_form/administrator/index.php?option=com_zakaz&amp;task=loadcity&amp;no_html=1&region_id=3352

Всё логично. Ловлю во фронт и в админ одинаково. Но во фронт всё олично, а в админ - возвращается вся страница целиком.
Если же в admin.zakaz.php запрос явням образом посылаю на zakaz.php т.е. так:
Код
jQuery.getJSON('http://j_form/index.php?option=com_zakaz&amp;task=loadcity&amp;no_html=1&region_id=3352', function(data){
то всё работает хорошо.

Собственно почему так до сих пор не понял. Ищу как в JS получить базовый URL теперь... чтоб явным образом направлять запрос на zakaz.php
*

Enxiro

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • http://gildman.ru
как в JS получить baseUrl я конечно нашёл.. и сделал так чтоб работало.
Код
jQuery.getJSON('http://'+location.host+'/index.php?option=com_zakaz&amp;task=loadcity&amp;format=raw&amp;tmpl=component&amp;no_html=1', {region_id: _this.value}, function(data){

но как то это всё неправильно.. заплатки.. если подскажите лучший способ - буду признателен.
*

userxp

  • Живу я здесь
  • 2019
  • 403 / 6
  • Злой и ужасный бармалей
когда работаешь с JS обязательно заменяй &amp; на &
entity является составной частью HTML, а не JS :)
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
для 1.5:
index.php?option=<твой компонент>&task=<твой таск>&tmpl=component
так передается то что содержится в файле component.php, а format=raw отдает то что нужно.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
component.php находится в текущем шаблоне, или если его там нет - то в шаблоне system.

SmokerMan, не все знают где етот файл.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

SmokerMan

  • Гуру
  • 5291
  • 720 / 26
SmokerMan, не все знают где етот файл.
зато я знаю :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

SP Page Builder - ajax Contact

Автор TW-WEB

Ответов: 4
Просмотров: 2695
Последний ответ 29.01.2019, 15:47:53
от Akeksandr
Как выполнить 2 разных скрипта в одном ajax-запросе?

Автор fbr

Ответов: 16
Просмотров: 1463
Последний ответ 02.03.2018, 00:08:04
от robert
[SP Page Builder] Модуль ajax contact в модальном окне

Автор TW-WEB

Ответов: 2
Просмотров: 3018
Последний ответ 24.02.2018, 17:34:50
от TW-WEB
Improved AJAX Login & Register + социальные кнопки

Автор atkaa1

Ответов: 12
Просмотров: 3439
Последний ответ 07.10.2017, 18:02:29
от vipiusss
Оптимизация вложености в компоненте

Автор kaksdelat

Ответов: 11
Просмотров: 2251
Последний ответ 16.07.2015, 23:55:15
от z3l