【问题标题】:ckeditor fails to post results when with ajax save使用ajax保存时ckeditor无法发布结果
【发布时间】:2015-05-17 22:47:39
【问题描述】:

我设置了一个表单来使用 ajax 进行动态保存。它适用于标准文本区域,但在使用 ckeditor 类启用 ckeditor 后它没有响应。表格如下:

<div class="form-group">
  <div class="float auto clear">
    <textarea class="ckeditor saveData" name="introtext" itemid="<?php echo $id; ?>" id="editor1" ><?php echo "$introtext"; ?></textarea>
  </div>
</div>

ckeditor 是 ckeditor 用来加载编辑器的类。 saveData 是我用来启动 javascript 函数以保存 textarea 数据的类。 javascript:

// ckeditor textarea
$(document).on('keyup','.saveData',function()
{
  var DATA = CKEDITOR.instances.editor1.getData();
  var cleaned=remove_whitespaces(DATA);
  var ID=$(this).attr('itemid');
  if(cleaned !=''){
    var dataString = 'introtext='+ cleaned  +'&id='+ ID;
    $.ajax({
      type: "POST",
      url: "save.php",
      data: dataString,
      cache: false
    });
  }
})
// END SAVE BASE


// ordinary textarea
$(document).on('keyup','.saveData2',function()
{
  var DATA=$(this).val();
  var cleaned=remove_whitespaces(DATA);
  var ID=$(this).attr('itemid');
  if(cleaned !=''){
      var dataString = 'introtext2='+ cleaned  +'&id='+ ID;
    $.ajax({
      type: "POST",
      url: "save.php",
      data: dataString,
      cache: false
    });
  }
})

您可以在 www.dottedi.us/ckeditor 查看表格。我尝试使用两者:

var DATA=$(this).val();

var DATA = CKEDITOR.instances.editor1.getData();

但两者都不起作用。

【问题讨论】:

    标签: javascript php jquery html ajax


    【解决方案1】:

    尝试使用以下-

    <div class="form-group">
      <div class="float auto clear">
        <textarea class="ckeditor saveData" name="introtext" itemid="<?php echo $id; ?>" id="editor1" ><?php echo "$introtext"; ?></textarea>
      </div>
    </div>
    
    // ckeditor textarea
    var editor = CKEDITOR.replace('editor1');
    editor.on('change', function()
    {
      var DATA = this.getData();
      var cleaned=remove_whitespaces(DATA);
      var ID=$('#editor1').attr('itemid');
      if(cleaned !=''){
        var dataString = 'introtext='+ cleaned  +'&id='+ ID;
        $.ajax({
          type: "POST",
          url: "save.php",
          data: dataString,
          cache: false
        });
      }
    })
    // END SAVE BASE
    

    【讨论】:

    • 这更接近但不太有效。它没有看到我通过的 ID (var ID=$(this).attr('itemid');)。传递的数据字符串是:“introtext=apple pie&id=undefined”。我尝试用不同的名称、$gid、$my_id 和相应的 VAR GID 等来调用它,但没有区别。它不会像那样在表单行中使用任何变量。例如:&lt;textarea class="ckeditor saveData" name="introtext" itemid="147" my_id="147" gid="147" &gt;&lt;?php echo "$introtext"; ?&gt;&lt;/textarea&gt;。在 mysql 表中保存正确项目所需的 itemid 或任何名称。
    • @BobMeetin,请检查我更新的答案这应该可以工作我在我的机器上测试了相同的上述代码并使用正确的 id - $("#editor1").attr('itemid') textarea 你应该得到属性的值。
    • 默认情况下,“this”引用了 CKEditor 实例,但您试图选择 textarea 以获取其属性值
    • 效果很好!如果那样的话,我对 javascript 的了解很少,这很有帮助。
    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多