使用 AJAX MVC PHP 发送内容 tinyMCE
Send content tinyMCE using AJAX MVC PHP
我正在尝试 post 一个包含电子邮件元素(如主题和消息)的数组。我在主题部分使用了 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>
Ajax 控制器
function action()
{
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case "SendMail":
$mailController = new MailController;
$result = $mailController->sendMail($_POST['reciever'], $_POST["subject"], $_POST["message"]);
return $result;
break;
}
}
}
我有一些额外的文件连接到它,比如调度程序和控制器,但这对未进入 ajax 脚本的内容没有影响。
你犯了一个愚蠢的错误。您没有向 AJAX 请求提供 URL。看行
url: $('#url').val() + 'Ajax/ajax',
我在 html 表格中找不到 url ID。将完全限定的 URL 添加到 AJAX 的 url 属性。
当 TinyMCE 在页面上加载时,原始 <textarea>
不再可见。 TinyMCE 在内容编辑区域使用 iframe 代替 <textarea>
。如果您使用 JavaScript 代码发送表单的内容,则底层 <textarea>
将不包含任何内容,因为您实际上并未在 <textarea>
中键入内容。您可以在 tinymce
对象上使用 triggerSave()
方法让 TinyMCE 使用编辑器的当前内容更新 <textarea>
。您应该在开始 AJAX POST 流程之前立即执行此操作。
而不是
$('#message').html(tinymce.get('#message').getContent());
...您想使用...
tinymce.triggerSave();
我正在尝试 post 一个包含电子邮件元素(如主题和消息)的数组。我在主题部分使用了 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>
Ajax 控制器
function action()
{
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case "SendMail":
$mailController = new MailController;
$result = $mailController->sendMail($_POST['reciever'], $_POST["subject"], $_POST["message"]);
return $result;
break;
}
}
}
我有一些额外的文件连接到它,比如调度程序和控制器,但这对未进入 ajax 脚本的内容没有影响。
你犯了一个愚蠢的错误。您没有向 AJAX 请求提供 URL。看行
url: $('#url').val() + 'Ajax/ajax',
我在 html 表格中找不到 url ID。将完全限定的 URL 添加到 AJAX 的 url 属性。
当 TinyMCE 在页面上加载时,原始 <textarea>
不再可见。 TinyMCE 在内容编辑区域使用 iframe 代替 <textarea>
。如果您使用 JavaScript 代码发送表单的内容,则底层 <textarea>
将不包含任何内容,因为您实际上并未在 <textarea>
中键入内容。您可以在 tinymce
对象上使用 triggerSave()
方法让 TinyMCE 使用编辑器的当前内容更新 <textarea>
。您应该在开始 AJAX POST 流程之前立即执行此操作。
而不是
$('#message').html(tinymce.get('#message').getContent());
...您想使用...
tinymce.triggerSave();