Главное меню
все форумы все темы форума добавить тему
ajax
Возникла проблема с Ajax.
Мне надо отдавать скомпилированный шаблон модуля для отображения в модальном окне (не как iframe). Я делаю ссылку на него http://dev.hottury.in.ua/tours-order.local/25.js и получаю чистый экран. При этом http://dev.hottury.in.ua/tours-order.local/25 отрабатывает отлично.
Да и в админке, сделанный по аналогичной схеме модуль работает нормально.
Что я упускаю?
Я по ссылке получил "showcase_order_local.tpl"
Такой ответ должен быть?
Это я сделал echo $this->template в модуле showcase_order_class.php
 
у меня хендлер, тот который index.php вот так обрабатывает запросы:
index.php:
PHP
LabCMS::i()->setModuleTemplate($activeClass->getTemplate());
Tpl::i()->assign('data',$activeClass->getData());

 
class sOrder extends tourHelper:
PHP
        public function __construct()
        {
                if (method_exists($this,$_GET['var1'])) call_user_func(array($this,$_GET['var1']));
                else return false;
        }
 
        private function local()
        {
                $this->data=$this->getLocalTourByID($_GET[var2]);
                if (!$this->data) LabCMS::i()->error403();
                $this->template='showcase_order_'.$_GET['var1'].'.tpl';
        }
 

...
 
        public function getData()
        {
                return $this->data;
        }
       
        public function getTemplate()
        {
                return $this->template;
        }
Кажется я понял в чем дело:
Для вывода ajax ответов по умолчанию используется шаблон blank.tpl, который содержит только одну строчку
Smarty
{$_component}

Ваш же модуль showcase компонентом не является. Так что в данном случае нужно либо сделать другой сборочный шаблон, либо не использовать шаблон вовсе (если кэширование аякс-ответа не нужно).
Да, не является.
А можно поподробнее про компонент и статичный.
А то я пол сайта уже сделал, а толком не разобрался в разнице между ними.
Может быть у меня модуль как раз таки компонентом и является.
Вопрос снимается. Почитал в документации, сделал модуль компонентом. Так как он таки является тем модулем который выводит основной контент.
 
Спасибо за наводку. Я бы наверное долго искал пока нашел бы в чем причина.
Добрый день. При ajax запросе, сервер вместе с нужным ответом отдает код всей скомпилированной страницы. Использую jquery. Так же создал зависимый список - все ок, а вот тут не пойму...
Defari:
Добрый день. При ajax запросе, сервер вместе с нужным ответом отдает код всей скомпилированной страницы. Использую jquery. Так же создал зависимый список - все ок, а вот тут не пойму...

А как Вы генерируете ajax ответ?
PHP

if(isset($_POST['room_count'])){
           
$result = $_POST['room_count'];
           echo $result;
   }
 

 
Получается что в нужный <div> приходит ответ, но вместе со всем (еще раз сгенерированным модулем).
Если так, то просто добавить
PHP
exit;

в конце вывода, чтобы прервать работу шаблонизатора.
Loki:
Если так, то просто добавить
PHP
exit;

в конце вывода, чтобы прервать работу шаблонизатора.

Действительно, спасибо