Jquery ajax表单提交后,来自ckeditor textarea的值不会通过post发送

Jquery ajax表单提交后,来自ckeditor textarea的值不会通过post发送,jquery,ajax,ckeditor,Jquery,Ajax,Ckeditor,我有一个表单,有一些文本字段和一个文本区域(ckeditor),点击按钮后,art_title字段值被发送到art_save.php页面,但textarea的值没有发送 <script src="ckeditor/ckeditor.js"></script> function saveArt() { var title = document.getElementById('art_title'), art_title = title.value;

我有一个表单,有一些文本字段和一个文本区域(ckeditor),点击按钮后,art_title字段值被发送到art_save.php页面,但textarea的值没有发送

<script src="ckeditor/ckeditor.js"></script>
function saveArt() 
{
    var title = document.getElementById('art_title'),
        art_title = title.value;

    var desc = document.getElementById('art_body'),
        art_body = desc.value;

    jQuery.ajax({
        type: 'POST',
        url: 'art_save.php',
        data: {
            title: art_title,
            aut: art_author,
            tag: art_tag,
            desc: art_body

              }

         });  
         return false; 

 }

函数saveArt()
{
var title=document.getElementById('art_title'),
art_title=title.value;
var desc=document.getElementById('art_body'),
艺术体=描述值;
jQuery.ajax({
键入:“POST”,
url:“art_save.php”,
数据:{
标题:艺术名称,
aut:art_作者,
标签:艺术标签,
描述:艺术身体
}
});  
返回false;
}
html部分

<form method="post" name="art" id="art">
    <input type="text" id="art_title" name="art_title" placeholder="Here goes your title"/>
<textarea class="ckeditor" name="art_body" id="art_body"></textarea>
<input type="submit" name="savedraft" id="savedraft" onclick="saveArt();return false;" value="Need more Research ! Save as Draft" class="button"/>
</form>

您可以通过以下方式获得html表单编辑器:

var art_body = CKEDITOR.instances.art_body.getData();

您可以使用以下命令强制CKeditor更新textarea值:

for (instance in CKEDITOR.instances) {
    CKEDITOR.instances[instance].updateElement();
}
此外,您还可以对数据使用
.serialize
,这样,如果参数发生变化,您就不必维护AJAX代码:

<script src="ckeditor/ckeditor.js"></script>
function saveArt() 
{
    for (instance in CKEDITOR.instances) {
        CKEDITOR.instances[instance].updateElement();
    }

    jQuery.ajax({
        type: 'POST',
        url: 'art_save.php',
        data: $("#art").serialize()
     });  
     return false; 

 }

函数saveArt()
{
例如(在CKEDITOR.instances中的实例){
CKEDITOR.instances[instance].updateElement();
}
jQuery.ajax({
键入:“POST”,
url:“art_save.php”,
数据:$(“#艺术”).serialize()
});  
返回false;
}

这就是我的工作原理:

$.ajax(
{
  type: "POST",
  url: path+"/html-action",
  data: {data1: dataone,
        data2: datatwo,
        data3: datathree,
        data4: datafour,
        message: ckeditortxt},
  cache: true,
  success: function(html)
  {
}
}

起初,我使用datastring传递信息,但出于某种原因,保存ckeditor数据的元素没有被视为参数。因此,我将所有参数拆分为单个组件,即data1 data2、data3、data4。。。。这一次,它起作用了

I fix在更改时更新了字段值。这是我的代码:

HTML:


克菲尔德
JS:


$(函数(){
var$ckfield=CKEDITOR.replace('ckfield');
$ckfield.on('change',function()){
$ckfield.updateElement();
});
});

只需签入JSFIDLE,works文件即可。可能您忘记了一些重要的细节。谢谢,伙计,代码工作了,刚刚添加了(CKEDITOR.instances中的实例){CKEDITOR.instances[instance].updateElement();}现在它的保存文本区域字段值,再次感谢@Carl谢谢你,Carl祝你一切顺利!非常感谢。
$.ajax(
{
  type: "POST",
  url: path+"/html-action",
  data: {data1: dataone,
        data2: datatwo,
        data3: datathree,
        data4: datafour,
        message: ckeditortxt},
  cache: true,
  success: function(html)
  {
}
}
<div class="row">
    <div class="form-group col-sm-11">
        <label for="ckfield">ckfield</label>
        <textarea id="ckfield" class="form-control" rows="10" name="ckfield" cols="50"></textarea>
    </div>
</div>
<script>
$(function(){
    var $ckfield = CKEDITOR.replace( 'ckfield' );

    $ckfield.on('change', function() {
      $ckfield.updateElement();         
    });
});
</script>