【问题标题】:CKEditor - Inline editing: browser POSTs not full contentCKEditor - 内联编辑:浏览器 POST 不是完整内容
【发布时间】:2013-02-12 13:17:35
【问题描述】:

这是保存“edit_body”字段的浏览器脚本:

<script>
$(document).ready(function(){
 $("#save_editable").click(function(){
  var edit_body = $("#edit_body").html();
  setTimeout(function(){
   $.ajax({
    url:'http://my-url.com/my_editor.php?id_to_update=123',
    type:'POST',
    data:{edit_body:edit_body},
    success:function(data){
     if(data=='1'){
      alert('Saved');
     }
    }
   });
  },5000);
 });
});
</script>

服务器下一步做:

if(@$_POST["edit_body"]){
 $id_to_update=intval($_GET['id_to_update']);
 $edit_body=iconv('UTF-8', 'windows-1251', html_entity_decode($_POST["edit_body"], ENT_QUOTES, "utf-8"));
 if(mysql_query(sprintf('update my_table set body="%s" where id="%s";',$edit_body,$id_to_update)){
  print '1';
 }
}

问题是: 当“edit_body”包含大量文本时,它会成功保存但不是完整内容。 浏览器越弱,保存的文本就越少。 在这种情况下,我制作了延迟 5 秒的 setTimeout 函数。但有时它没有帮助..

如何告诉浏览器在 Ajax 发布之前等待处理变量“edit_body”?

【问题讨论】:

  • 浏览器越弱 这到底是什么意思?您是否查看了发送到服务器的内容?当您从控制台/提琴手查看帖子请求时,它是否全部存在?你是取消save_editable的点击动作吗?
  • 当我在浏览器中打开超过 20 个选项卡时,它的工作速度会变慢,并且需要更多时间从页面中的字段中获取变量。服务器端一切正常。我没有取消任何东西。就等着吧。

标签: php javascript ajax ckeditor inline-editing


【解决方案1】:

使用 CKEditor 的 getData() 方法而不是 jQuery 的 html() 方法来获取文档的问题解决了:

var edit_body = CKEDITOR.instances["edit_body"].getData();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    相关资源
    最近更新 更多