Отправка содержимого TinyMCE с помощью AJAX MVC PHP

#javascript #jquery #ajax #tinymce #phpmailer

#javascript #jquery #ajax #tinymce #phpmailer

Вопрос:

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

Скрипт:

         $('#message').html(tinymce.get('#message').getContent());
        $.ajax({
            type: "POST",
            data: $('#contact-form, #message').serializeArray(),
            dataType: 'JSON',
            url: $('#url').val()   'Ajax/ajax',
            success: function ($data) {
                console.log($data);
                console.log("Email verzonden!");
            },
            error: function (jqXHR, exception) {
                alert("ajaxerror: "   jqXHR.responseText);
            }
        });
    });
  

Форма:

 <section class="mb-4">
    <div class="row">
        <div class="col-md-9 mb-md-0 mb-5">
            <form id="contact-form" name="contact-form">
                <div class="row">
                    <div class="col-md-12">
                        <div class="md-form mb-0">
                            <input type="text" id="reciever" name="reciever" class="form-control" placeholder="Aan *" required>
                        </div>
                        <div class="md-form mb-0">
                            <input type="text" id="cc" name="cc" class="form-control" placeholder="CC">
                        </div>
                        <div class="md-form mb-0">
                            <input type="text" id="bcc" name="bcc" class="form-control" placeholder="BCC">
                        </div>
                        <div class="md-form mb-0">
                            <input type="text" id="subject" name="subject" class="form-control" placeholder="Onderwerp *" required>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-md-12">
                        <div class="md-form">
                            <textarea type="text" id="message" name="message" rows="2" class="form-control md-textarea" placeholder="Bericht *"></textarea>
                        </div>
                    </div>
                </div>
                <div class="text-center text-md-left">
                    <input type="hidden" name="action" value="GCSSendMail">
                    <input type="submit" id="GCSSendMail" class="btn btn-primary AjaxCall" value="Submit">
                </div>
                <div class="status"></div>
            </form>
        </div>
    </div>
</section>
<a href="<?php echo BASE_URL ?>Mail/mail">Go mail</a>
  

Ajaxcontroller

 function action()
{
    if (isset($_POST['action'])) {
        switch ($_POST['action']) {
            case "SendMail":
                $mailController = new MailController;
                $result = $mailController->sendMail($_POST['reciever'], $_POST["subject"], $_POST["message"]);
                return $resu<
                break;
         }
    }
}
  

У меня есть несколько дополнительных файлов, подключенных к нему, таких как диспетчер и контроллер, но это никак не влияет на то, что содержимое не попадает в скрипт ajax.

Ответ №1:

Когда TinyMCE загружается на страницу, оригинал <textarea> больше не отображается. TinyMCE использует iframe для области редактирования содержимого вместо <textarea> . Если вы используете код JavaScript для отправки содержимого формы, базовый <textarea> не будет содержать никакого содержимого, поскольку вы фактически не вводите в <textarea> . Вы можете использовать triggerSave() метод для tinymce объекта, чтобы TinyMCE обновлял <textarea> текущее содержимое редактора. Вы должны сделать это прямо перед началом процесса публикации AJAX.

Вместо

 $('#message').html(tinymce.get('#message').getContent());
  

…вы хотите использовать…

 tinymce.triggerSave();
  

Ответ №2:

Вы допустили глупую ошибку. Вы не предоставляете URL-адрес для запроса AJAX. Посмотрите на строку

 url: $('#url').val()   'Ajax/ajax',
  

Я не смог найти идентификатор URL в форме html. Добавьте полностью обработанный URL-адрес в атрибут url AJAX.

Комментарии:

1. У меня есть диспетчер, который сначала должен вызвать контроллер, а затем функцию вместо обычного URL.