ckeditor不会发布更新的内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ckeditor不会发布更新的内容相关的知识,希望对你有一定的参考价值。
我正在使用ckeditor 4.6.2并遇到一个问题,如果我更改编辑器中的内容,它们不会通过ajax调用回发到服务器。
我的设置是这样的:
- 带有ID
#editor1
的Textarea已经应用了ckeditor。 - 在页面加载时,我使用ajax从数据库中将一些内容加载到编辑器中(这一切都正常)。
- 我的提交按钮的ID为
#sendBtn
然后我使用ajax来处理表单提交 - 按#sendBtn
。帖子有效,但如果我在#editor1
中编辑了内容,则会提交原始内容 - 页面加载时的内容,而不是编辑过的内容。
我穿过这个帖子How to ajax-submit a form textarea input from CKEditor?。我在ajax电话会议之前添加了接受的答案。所以我处理提交的jquery看起来像这样:
$('#sendBtn').click(function(e) {
e.preventDefault();
$('#sendBtn').prop( "disabled", true);
var dataString = $("#emailForm").serialize();
/**
* https://stackoverflow.com/questions/3256510/how-to-ajax-submit-a-form-textarea-input-from-ckeditor
*/
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
$.ajax({
url: "/admin/ajax/email",
data: dataString,
method: "POST",
}).done(function(data) {
// ...
});
});
如果我使用php在/admin/ajax/email
转储POST数据,它将显示原始内容,而不是更新版本。
奇怪的是,如果我在浏览器控制台中运行它,它会返回true
然后看起来有效:
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
那么在进行ajax调用之前上面的代码没有完成的问题是什么?我该怎么处理?
答案
好吧有点晚了。
正如您的(非常有用的)引用所示,您必须在触摸表单之前更新CKEDITOR实例,因此:
$('#sendBtn').click(function(e) {
e.preventDefault();
$('#sendBtn').prop( "disabled", true);
// This before:
for ( instance in CKEDITOR.instances )
CKEDITOR.instances[instance].updateElement();
// Then this:
var dataString = $("#emailForm").serialize();
$.ajax({
url: "/admin/ajax/email",
data: dataString,
method: "POST",
}).done(function(data) {
// ...
});
});
以上是关于ckeditor不会发布更新的内容的主要内容,如果未能解决你的问题,请参考以下文章