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

#
AJAX обработка отправки формы
Здравствуйте коллеги, есть форма которая обрабатывается ajax-ом, в шаблон страницы я вставил код обработчика

$oForm = Core_Entity::factory('Form', '21');
   $Form_Controller_Show = new Form_Controller_Show($oForm);
   if (!is_null(Core_Array::getPost($oForm->button_name)))
   {
      $Form_Controller_Show
         //->values($_POST + $_FILES)
            ->values($_POST)
         // 0 - html, 1- plain text
         ->mailType(0)
         ->mailXsl(
            Core_Entity::factory('Xsl')->getByName('ПисьмоКураторуФормыВФорматеHTML')
         )
         ->mailFromFieldName('rz300@ya.ru')
         ->process();
   }
   $Form_Controller_Show
      ->xsl(
         Core_Entity::factory('Xsl')->getByName('ОтобразитьФормуНаГлавнойCar-Карыч')
      )
      ->show();
в xsl шаблоне убрал из <form> action и теперь мне необходимо понять что надо допилить в js, что бы у меня нормально обрабатывалась отправка формы.
JS код

function submit_form(e) {
        var $form = $(e.target),
            $btn = $form.find('button'),
            btn_text = $btn.text();
        $.ajax({
            url: 'какой вставить адрес для обработки отправки формы?',
            data: $form.serialize(),
            dataType: 'json',
            type: 'POST',
            beforeSend: function() {
                $('#contact_fail .alert-inner').empty();
                $('#contact_fail').hide();
                $btn.attr('disabled', 'disabled').addClass('btn-disabled').css('cursor', 'not-allowed').text('Sending...');
            },
            success: function(result) {
                if (typeof result.success == 'undefined') {
                    // form is not valid, display errors
                    for (var x in result) {
                        $('#contact_fail .alert-inner').append('<p>' + result[x] + '</p>');
                    }
                    $('#contact_fail').fadeIn();
                } else {
                    // form sent successfully and without errors
                    $('#contact_success').fadeIn(700, function() {
                        var $this = $(this);
                        setTimeout(function() {
                            $this.fadeOut();
                        }, 5000);
                    });
                }
            },
            complete: function() {
                $btn.removeAttr('disabled', 'disabled').removeClass('btn-disabled').css('cursor', 'pointer').html(btn_text);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                switch (jqXHR.status) {
                    case 404:
                        alert("We're Sorry... The file you are looking for is not found :(");
                        break;
                    case 500, 200:
                        $('#contact_fail .alert-inner').append("<p>Oops, something went wrong and we couldn't send your message :(</p>");
                        $('#contact_fail').fadeIn();
                        break;
                    default:
                        console.log(jqXHR, textStatus, errorThrown);
                }
            }
        });
    }

Помогите пожалуйста, я голову немного сломал себе.
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
Rewired писал(а):
 url: 'какой вставить адрес для обработки отправки формы?',

можете вообще  его убрать, будет отправка на текущий адрес
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: AJAX обработка отправки формы
спасибо, а этим я разобрался, теперь у меня другой вопрос, как вернуть результат отправки формы скрипту? Он у меня при отправке формы ошибку выдает из вот этого кейса: case 500, 200
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
В общем победил добавление информации о заполненной форме в админку:
<?php
if (Core::moduleIsActive('form'))
{
ob_start();
   $oForm = Core_Entity::factory('Form', '21');

   $Form_Controller_Show = new Form_Controller_Show($oForm);

   
      
      $Form_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();

echo json_encode(ob_get_clean());

   

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

}
?>
вот таким вот образом.
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
Коллеги, ситуация немного прояснилась. В консоли js нашел проблему. После обработки страницы, в ответ приходит html документ вместо json. Подскажите, что я делаю не так?
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
Rewired,
может быть так?
echo json_encode(array('html' => ob_get_clean()));
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: AJAX обработка отправки формы
не помогло, вот такое выводится:
{"html":"\n\n
\n
\n
\n
\n
\n \u0421\u0412\u042f\u0416\u0418\u0422\u0415\u0421\u042c \u0421 \u041d\u0410\u041c\u0418<\/span>\n <\/h2>\n <\/div>\n
\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u043d\u0430\u043c \u0441\u0432\u043e\u0438 \u043f\u043e\u0436\u0435\u043b\u0430\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u043c\u0435\u0441\u0442\u0435!<\/p>\n <\/header>\n <\/div>\n<\/div>\n

\n
\n
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
он вообще по каким то причинам выводит html страницу вместо json data
В говно может вступить любой желающий. (с)
#
Re: AJAX обработка отправки формы
Rewired,
Ну вот приходит json как вы и хотели, еще нужно прервать загрузку страницы после получения json данных, например exit()
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: AJAX обработка отправки формы
эм, ответ от сервера немного не тот который нужен получается у него response html страница, а хотелось бы что бы отдавалось success : true на пример
В говно может вступить любой желающий. (с)
Авторизация