ckeditor inline save/submit
ckeditor inline save/submit
我无法弄清楚如何从CKEditor实例中获取编辑后的数据并将其发布到一个URL上。\n我在查看这个示例:\nhttp://nightly.ckeditor.com/3995/samples/inlineall.html\n但我无法弄清楚如何保存更改。我可以将新编辑的数据与正在编辑的元素的ID一起发布到PHP吗?\n类似于这样:\n
editor.on('configLoaded', function(){ // 做一些操作 });
\n我希望能够做类似于这样的操作:\n
editor.on('clickAway', function(e){ id = e.id(); // 做一些ajax操作 });
\n但是我似乎找不到任何信息。\n有人知道如何做到这一点吗?\n谢谢。
问题的原因是:在ckeditor inline编辑器中,通过重写默认的保存按钮来实现保存功能。但是在保存之前,需要比较新旧数据是否有变化。
解决方法是:在编辑器初始化时,获取当前数据并保存在变量中。然后重写保存功能,并使用ajax将数据发送到服务器进行保存。在ajax请求的回调函数中,根据保存结果弹出相应的提示信息。
具体代码如下:
CKEDITOR.disableAutoInline = true; $("div[contenteditable='true']").each(function(index) { var content_id = $(this).attr('id'); var tpl = $(this).attr('tpl'); var oldData = null; CKEDITOR.inline(content_id, { on: { instanceReady: function(event) { //获取当前数据并保存在变量中 oldData = event.editor.getData(); // 重写保存功能 event.editor.addCommand("save", { modes: { wysiwyg: 1, source: 1 }, exec: function() { var data = event.editor.getData(); // 检查是否有变化 if (oldData !== data) { oldData = data; $.ajax({ type: 'POST', url: 'process.php', data: { content: data, content_id: content_id, tpl: tpl } }) .done(function(data) { alert('保存成功'); }) .fail(function() { alert('保存失败'); }); } else alert('数据没有变化'); } }); } } }); });
希望这能帮到你!
问题的出现原因:
在给定的代码中,出现了一个名为"ckeditor inline save/submit"的问题。这个问题是在一个使用Smarty模板引擎的HTML文件中使用CKEditor进行内联编辑时出现的。
解决方法:
为了解决这个问题,作者提供了以下解决方法:
1. 首先,在HTML模板文件中使用contenteditable属性为true的div标签,将其转换为可内联编辑的区域。
2. 当内容被编辑后(失去焦点),将被编辑的元素id、模板文件名和编辑后的内容通过ajax调用发送到服务器端。
3. 在服务器端,使用PHP代码加载HTML文件,并定位具有正确id的div标签,然后将div标签的内容替换为通过ajax调用发送的内容。
4. 最后,将更新后的HTML文件重新保存到服务器。
还有一些额外的代码,用于存储备份版本以防万一。
问题“ckeditor inline save/submit”的出现是因为作者想要在使用Smarty模板引擎的HTML文件中使用CKEditor进行内联编辑。为了解决这个问题,作者使用了一些JavaScript和PHP代码,通过ajax调用将编辑后的内容发送到服务器,并将内容替换到HTML文件中的相应区域。这个解决方法适用于多个可编辑区域的情况,并提供了备份机制以防止意外情况的发生。