如何在服务器上保存内联编辑器内容?

时间:2012-12-17 20:51:46

标签: javascript ajax ckeditor

我正在使用CKeditor允许用户在登录后内联编辑页面上的内容。

我知道我可以使用以下方式访问数据:

var data = CKEDITOR.instances.editable.getData();

但我不知道如何将数据发送到脚本,以便我可以更新数据库。如果每次有人取消选择contenteditable元素时脚本运行会很酷......但我不知道那是否可能。

任何提示都会很棒! :)

我的网站是使用php / mysql构建的。

3 个答案:

答案 0 :(得分:20)

这样的事情:

CKEDITOR.disableAutoInline = true;

CKEDITOR.inline( 'editable', {
    on: {
        blur: function( event ) {
            var data = event.editor.getData();
            // Do sth with your data...
        }
    }
} );

请注意,这不适用于其他交互,例如:用户名为editor.setData()或用户在编辑时关闭了网页。在这种情况下,内容将丢失。如果我是你,我宁愿定期检查新数据:

CKEDITOR.disableAutoInline = true;

var editor = CKEDITOR.inline( 'editable', {
    on: {
        instanceReady: function() {
            periodicData();
        }
    }
} );

var periodicData = ( function(){
    var data, oldData;

    return function() {
        if ( ( data = editor.getData() ) !== oldData ) {
            oldData = data;
            console.log( data );
            // Do sth with your data...
        }

        setTimeout( periodicData, 1000 );
    };
})();

答案 1 :(得分:3)

CKEDITOR.inline('editable'  ,{
        on:{
            blur: function(event){
                if (event.editor.checkDirty())
                    console.log(event.editor.getData());
            }
        }
    });

试试这个。

答案 2 :(得分:1)

看起来“模糊”事件可能对您有所帮助: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#event:blur