如何使用JQuery将数据添加到CKEditor

36

每次页面加载时,我需要使用jQuery将文本加载到CK编辑器中,为了从CK编辑器中获取数据,我使用以下代码

var editor_data = CKEDITOR.instances['editor1'].getData();

现在是否有类似的函数可以用来将数据放回编辑器中?

我正在使用ajax设置数据,如下所示:

$.ajax({
  type: "POST",
  url: "/inc/ajax/basic.php?menu_id="+menu_id+"&info=3",
  success: function(msg){

    CKEDITOR.instances['editor1'].setData(msg);
  }
});

我做错了什么


3
您的标题说的是FCKEditor,但问题谈论的是CKEditor;它们实际上是两个不同的项目。您在这里询问的是哪一个? - Mark Bell
当使用CKeditor和<textarea>时,setData()方法的重要性不言而喻:&gt;&lt;实体会转换为标签符号,请参见http://jsfiddle.net/9qu39/。 - Peter Krauss
7个回答

73

试试这个:

CKEDITOR.instances['editor1'].setData(html)

'html'是包含需要编辑内容的字符串.


这是正确的做法,但在这种情况下它就是不想运行。$.ajax({ type: "POST", url: "/inc/ajax/basic.php?menu_id="+menu_id+"&info=3", success: function(msg){ CKEDITOR.instances['editor1'].setData(msg); } }); - Elitmiar
1
当使用CKeditor与<textarea>时,setData()方法的重要性解释:请参见http://jsfiddle.net/9qu39/。 - Peter Krauss

11

因为它不是一个数组,所以只需像这样替换实例

CKEDITOR.instances.editor1.setData(html)

2
var editor = CKEDITOR.instances.help_ldesc;         
editor.setData(''); 
$.ajax({
url: urlstr, // Url to which the request is send
type: "POST",             // Type of request to be send, called as method
data:{action:"ex_form"}, // Data sent to server, a set of key/value pairs (i.e. form fields and values)
contentType: false,       // The content type used when sending data to the server.
cache:false,             // To unable request pages to be cached
processData:false,        // To send DOMDocument or non processed data file it is set to false
success: function(data)   // A function to be called if request succeeds
{
    //alert(data);
    var data1=data.split("~`");
    $('#help_id').val(data1[0]);
    $('#help_title').val(data1[1]);
    $('#help_sdesc').val(data1[2]);                 

    editor.setData(''+data1[3]);    
    var edata = editor.getData();
    alert(edata);
}
});

使用此代码,它对我有效,(help_ldesc)是我的文本区域名称。


1

你应该使用数据和方法来发送查询字符串,就像这样:

$(document).ready(function()
{
  var querystring="menu_id="+menu_id+"&info=3";
  $.ajax({
  method: "POST",
  url: "/inc/ajax/basic.php",
  data:querystring,
  success: function(msg)
   {
     CKEDITOR.instances['editor1'].setData(msg);
   }
  });
});

1
CKEDITOR.instances['<%=ckEditor.ClientID%>'].setData(value);

1
var jqxhr = $.get( "file.php", function(data) {
CKEDITOR.instances.idOftextAreaName.setData( data );
    alert( "success" );
  })
.done(function() {
    //alert( "second success" );
})
.fail(function() {
    alert( "error" );
})
.always(function() {
   // alert( "finished" );
});

将 idOftextAreaName 更改为您的文本区域的 ID。 - KHALID
2
欢迎!请注意,您也可以点击您的答案下方的 [编辑] 按钮并进行更新。这比在自己的答案上留下评论更好。 - user13500

0

根据我的经验,在函数内使用有时无法正常工作。我建议使用in:

    $(document).ready(function () {
    ...
    // instance, using default configuration.
    CKEDITOR.replace('editor1');
    //set data
    CKEDITOR.instances['editor1'].setData(data);
    ...
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接