javascript CKEDITOR AJAX 帖子

lymgl2op  于 2022-11-27  发布在  Java
关注(0)|答案(4)|浏览(160)

我正在尝试使用 AJAX 创建一个管理页面,这样当客户端在CKEDITOR中更新信息时,就不必转到新的页面。使用.瓦尔()函数从输入字段中获取数据很容易,但是因为文本区域不是动态更新的,所以我不能使用相同的函数。以下是我得到的结果:
//这会将所有textarea标记替换到CKEDITORS中

<script type="text/javascript"> 
    CKEDITOR.replaceAll();
</script>

//这会尝试从输入和文字区域抓取所有数据

$(function() {
        $("#submit").click(function() {
            var newsTitle = $("#newsTitle").val();
            var editNews = CKEDITOR.instances.editNews.getData();
            var contactTitle = $("#contactTitle").val();
            var editContact = CKEDITOR.instances.editContact.getData();
            var linksTitle = $("#linksTitle").val();
            var editLinks = CKEDITOR.instances.editLinks.getData();

                $.ajax({
                   type: "POST",
                   url: "update.php",
                   data: 'newsTitle='+newsTitle+'&editNews='+editNews+'&contactTitle='+contactTitle+'&editContact='+editContact+'&linksTitle='+linksTitle+'&editLinks='+editLinks,
                   cache: false,
                   success: function(){
                        updated();
                    }

                 });    

            return false;
        });
    });

getData()函数看起来可以工作,因为我用警报测试了它,它从编辑器中获取数据,但是一旦我尝试更新,它就不工作了...
有什么主意吗?

jutyujz0

jutyujz01#

以下代码替换了文本区域:

<script type="text/javascript">

CKEDITOR.replace( 'TEXTAREA_ID', {
    extraPlugins : 'autogrow',
    removePlugins : 'resize',
    entities : false
});

</script>

在JS文件中,这是代码,我使用的是Jquery Validator插件:

$(document).ready(function(){

jQuery.validator.messages.required = "";

$("#FormID").validate({
    submitHandler: function(){

        var ContentFromEditor = CKEDITOR.instances.TEXTAREA_ID.getData();

        var dataString = $("#FormID").serialize();

            dataString += '&ContentFromEditor='+ContentFromEditor;          

        $.ajax({
        type: "POST",
        url: "Yourfile.php",
        data: dataString,
        cache: false,
        success: function(html){
            YOU WORK WITH THE RETURN HERE
       },
       error: function(xhr, ajaxOptions, thrownError){ 
            alert(xhr.responseText);
        }
     });

   return false;

    }
});

});

这是大多数时候产生错误的代码行:

CKEDITOR.instances.TEXTAREA_ID.getData();

在示例之后总是出现文本区域的ID。
我有自己的config.js,你可以从ckeditor网站或示例中获得。

klsxnrf1

klsxnrf12#

查看用于jQuery的CKEditor函数/适配器
http://docs.cksource.com/CKEditor_3.x/Developers_Guide/jQuery_Adapter
由于设置和检索编辑器数据是一个常见的操作,jQuery Adapter还提供了专用的val()方法:

// Get the editor data.
var data = $( 'textarea.editor' ).val();
// Set the editor data.
$( 'textarea.editor' ).val( 'my new content' );
vmdwslir

vmdwslir3#

有了这段代码,我的问题就解决了。我更新了运行ckeditor的字段,使其在serialize中可见。

$('#form').find('.class').each(function(index) {
    $(this).val(CKEDITOR.instances[$(this).attr('id')].getData());
});
hc2pp10m

hc2pp10m4#

我在ckeditor和 AJAX 调用方面也遇到了同样的问题。

相关问题