CKEDITOR AJAX сообщений - PullRequest
       7

CKEDITOR AJAX сообщений

0 голосов
/ 07 июля 2010

Я пытаюсь создать страницу администратора, используя AJAX, поэтому, когда клиент обновляет информацию в CKEDITOR, ему не нужно переносить его на новую страницу. Получение данных из полей ввода достаточно просто с помощью функции .val (), но поскольку текстовые области не обновляются на лету, я не могу использовать эту же функцию. Вот насколько я получил:

// это заменяет все теги 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 (), похоже, будет работать, потому что я протестировал ее с оповещениями, и она собирала данные из редакторов, но как только я попытался обновить, она не сработала ...

есть идеи?

Ответы [ 3 ]

3 голосов
/ 27 декабря 2011

Этот код заменяет текстовое поле:

<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();

После того, как экземпляры всегда идут идентификатор текстовой области.

У меня есть свой собственный config.js, который вы можете получить с веб-сайта ckeditor или спримеры.

1 голос
/ 08 июня 2014

С этим кодом мои проблемы были решены. Я обновил поле с запущенным ckeditor, чтобы увидеть его в сериализации.

$('#form').find('.class').each(function(index) {
    $(this).val(CKEDITOR.instances[$(this).attr('id')].getData());
});
1 голос
/ 07 июля 2010

Посмотрите на функцию / адаптер CKEditor для jQuery

http://docs.cksource.com/CKEditor_3.x/Developers_Guide/jQuery_Adapter

Поскольку установка и получение данных редактора является обычной операцией, адаптер jQuery также предоставляетВыделенный метод val ():

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