我正在使用ckeditor 4.6.2并遇到一个问题,如果我更改编辑器中的内容,它们不会通过ajax调用回发到服务器。
我的设置是这样的:
#editor1
的文字区域已应用了ckeditor。#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调用之前,上述代码是否未完成?我该如何处理?
答案 0 :(得分:0)
好一点。
正如您的(非常有帮助的)参考所示,您必须在触摸表单之前更新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) {
// ...
});
});