[英]Tinymce plugin not getting textarea value to upload in database
我正在尝试上传数据库中的数据。
我将tinymce
插件用于textarea编辑器。 当我提交数据时,textarea值会上传空文本。 请在下面找到前端和后端代码。
前端代码:
<form id="upload" enctype="multipart/form-data" method="post">
<textarea class="tinymce" name="product_tip" id="product_tip" placeholder="" col="5"></textarea>
<input type="button" name="submit" value="Submit" class="upload-btn"/>
</form>
后端代码:
<?php
$product_tip=$_POST["product_tip"];
if(empty($product_tip)) {
echo "<div class='alert alert-danger'>Please enter Product tips.</div>";
}
else{
$result=mysqli_query($conn, "INSERT INTO product(tip) VALUES ('$product_tip')")or die("Could not retrieve image: " .mysqli_error($conn));
echo 1;
}
?>
这是我的前端和后端文件的连接代码。
$(document).ready(function(){
$('.upload-btn').click(function(){
var formdata=new FormData($('#upload')[0]);
$.ajax({
url:'includes/backend_product_upload.php',
method: "POST",
async: false,
cache: false,
contentType: false,
processData: false,
data : formdata,
success:function(answer_from_actionpage){
if(answer_from_actionpage == 1){
$('.error').html("<div class='alert alert-success'>Successfully Product Upload</div>");
//$('.form-control').val("");
}else{
$('.error').html(answer_from_actionpage);
}
}
})
});
});
添加tinyMCE.triggerSave();
在这样的连接文件中-
$('.upload-btn').click(function(){
tinyMCE.triggerSave();
var formdata=new FormData($('#upload')[0]);
$.ajax({
url:'includes/backend_product_upload.php',
method: "POST",
async: false,
cache: false,
contentType: false,
processData: false,
data : formdata,
success:function(answer_from_actionpage){
if(answer_from_actionpage == 1){
$('.error').html("<div class='alert alert-success'>Successfully Product Upload</div>");
//$('.form-control').val("");
}else{
$('.error').html(answer_from_actionpage);
}
}
})
});
默认情况下,通过标准HTML表单提交表单时,TinyMCE将自动更新基础<textarea>
。 这是TinyMCE中的内置行为,因为大多数应用程序不需要保持<textarea>
持续同步的开销。
如果您不依赖标准的HTML表单提交事件,则有两种选择...
当您开始AJAX表单提交过程时:
TinyMCE具有triggerSave()
方法,该方法强制编辑器立即与<textarea>
同步。
https://www.tinymce.com/docs/api/tinymce/root_tinymce/#triggersave
当用户想要提交表单然后执行验证时,可以首先调用triggerSave()
。
TinyMCE活动:
正如您对自己的问题的回答所示,您当然可以依赖各种编辑器事件,以通过triggerSave()
方法将编辑器同步到<textarea>
。 对此没有任何技术问题,只是知道如果您依赖于诸如change事件之类的事件,则可能会触发大量此类事件。 如果您有大型/复杂的HTML内容,或者一页上的许多编辑器不断与基础<textarea>
同步,则可能会影响浏览器的性能。
哪个更好?
如果您不需要实时验证内容...仅在AJAX提交过程开始时调用triggerSave()
可能会更容易(不需要将TinyMCE配置代码与事件绑定在一起),并且会减少浏览器的开销。
如果您确实需要实时验证内容...使用诸如change事件之类的事件来同步<textarea>
是更好的解决方案。 它可能看起来像这样:
tinymce.init({
selector: "#myTextarea",
...
setup: function (editor) {
editor.on('change', function () {
tinymce.triggerSave();
});
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.