AJAX обработка отправки формы

Модератор
#
Re: AJAX обработка отправки формы
Используйте
Core::showJson(array('html' => ob_get_clean()));
чтобы отправить заголовки и сформировать JSON.  
#
Re: AJAX обработка отправки формы
Если вот так вот выводить:
<?php
if (Core::moduleIsActive('form'))
{

   $oForm = Core_Entity::factory('Form', '21');
ob_start();
   $Form_Controller_Show = new Form_Controller_Show($oForm);

         $Form_Controller_Show
         ->values($_POST + $_FILES)
         // 0 - html, 1- plain text
         ->mailType(0)
         ->mailXsl(
            Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
         )
         ->mailFromFieldName('info@car-carych.ru')
         ->process();

   $Form_Controller_Show
      ->xsl(
         Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуНаГлавнойCar-Карыч')
      )
      ->show();
   Core:: showJson(array('html' => ob_get_clean()));
}
?>

то, получается вот что:
В говно может вступить любой желающий. (с)
Модератор
#
Re: AJAX обработка отправки формы
Так в коде настроек ТДС нужно размещать, а не в самой ТДС.
#
Re: AJAX обработка отправки формы
в каких настройках тдс? У меня обработчик отправки формы встроен в шаблон страницы
В говно может вступить любой желающий. (с)
Модератор
#
Re: AJAX обработка отправки формы
Rewired,
как вы из середины шаблона собрались давать JSON-ответ?
#
Re: AJAX обработка отправки формы
т.е надо поменять структуру сайта на тдс указать там модифицированную тдс?

Поменял и добавил. Теперь выводится только: {"html":""}
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
В шаблон страницы AJAX-обработчик вставлять не нужно!

В lib_config_NN.php или StructureConfigNN.php:

<?php
if (Core::moduleIsActive('form'))
{
  $oForm = Core_Entity::factory('Form', '21')
  $oForm_Controller_Show = new Form_Controller_Show($oForm);
  if (!is_null(Core_Array::getPost($oForm->button_name)))
    $oForm_Controller_Show
      ->values($_POST + $_FILES)
        //->values($_POST)
      // 0 - html, 1- plain text
      ->mailType(Core_Array::get(Core_Page::instance()->libParams, 'mailType'))
      ->mailXsl(
        Core_Entity::factory('Xsl')->getByName(Core_Array::get(Core_Page::instance()->libParams, 'notificationMailXsl'))
      )
      ->mailFromFieldName(Core_Array::get(Core_Page::instance()->libParams, 'emailFieldName'))
      ->process();

    $result = array('status' => true, 'message' => 'ok');
    
    echo json_encode($result);

    exit();
  }
  Core_Page::instance()->object = $oForm_Controller_Show;
}

В lib_NN.php или StructureNN.php....:

<?php
$oForm_Controller_Show = Core_Page::instance()->object;
if (is_object($oForm_Controller_Show))
{
  $oForm_Controller_Show
    ->xsl(
       Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуНаГлавнойCar-Карыч')
    )
    ->show();
}

... или в макете:

<?php
if (Core::moduleIsActive('form'))
{
  $oForm = Core_Entity::factory('Form', '21')
  $oForm_Controller_Show = new Form_Controller_Show($oForm);
  $oForm_Controller_Show
    ->xsl(
       Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуНаГлавнойCar-Карыч')
    )
    ->show();
}

ARTatom
#
Re: AJAX обработка отправки формы
все равно выдает html в ответе. вот скриншот firebug после отправки формы
В говно может вступить любой желающий. (с)
Модератор
#
Re: AJAX обработка отправки формы
artatom,
в настройках либы после
if (!is_null(Core_Array::getPost($oForm->button_name)))
забыли операторную скобку {
#
Re: AJAX обработка отправки формы
и после $oForm = Core_Entity::factory('Form', '21' забыли ; но это мало повлияло на результат.
В говно может вступить любой желающий. (с)
Авторизация