#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.