CKEditor自动插入\ n

时间:2012-07-03 23:31:35

标签: javascript ckeditor

我的问题在于CKEditor,我在提交数据时会添加\n

使用简单的方式获取数据:

CKEDITOR.instances['contentBox'].getData()

在DB中提交后的数据示例:

<p>\n   Heloo<br />\n   How are you?</p>\n
<p>\n   Another Subject<br />\n My name is Luis</p>\n

一切都很好,只想取消\n。我不想使用REGEX或其他PHP函数来删除它..我更喜欢通过CKEditor的配置解决方案。

编辑::

CKEditor不是问题(请David Mulder回答)。

我创建的Ajax代码(可能是问题):

$('#edit').live('click', function() {
    if ($("#formValue").valid())
    {
        $('.simplebox').slideUp(200, function() {
            $('body').animate({scrollTop:140}, 350, function() {
                $('#loading-edit').slideDown(300, function() {
                    $.ajax({
                        type: "POST",
                        dataType: "json",
                        url: "../new_lesson_proccess/",
                        data: getDataToPost(),
                        success: function(data){

                            if (data.success == true)
                            {
                                $('#loading-edit').fadeOut(200, function() {
                                    $('.name_news_success').html($('input[name=name]').val());
                                    $('#successfull-edit').fadeIn(200);
                                });
                            }

                        }
                    });
                });
            });
        });
    }
})

function getDataToPost()
{
    var value = CKEDITOR.instances['valuecontent'].getData();

    return {
        id: $('input[name=news_id]').val(),
        tags : $('#tags').textext()[0].tags()._formData,
        name: $('input[name=name]').val(),
        content: value
    }
}

这里可能有什么问题?

编辑2 ::

我正在使用CodeIgniter框架。

控制器的一部分:

public function new_lesson_proccess()
    {
        // # POST to Array
        $data = array(
            'content' => $this->input->post('content', FALSE)
        );

        $dataExport = array(
            'success' => $this->lessons_model->news_lesson($data)
        );

        echo json_encode($dataExport);
    }

模型的一部分lessons_model

function new_lesson($data)
    {
        $dataInsert = array(
            'content' => mysql_real_escape_string($data['content'])
        );

        if ($this->db->affected_rows($this->db->insert('web_lessons', $dataInsert)) == 1)
            return true;
        else
            return false;
    }

编码:UTF-8

数据库中的字段content定义为TEXT

我删除了一些验证码&amp;因为它并不重要。

5 个答案:

答案 0 :(得分:3)

这可能会有所帮助。

CKEDITOR.on( 'instanceReady', function( ev )
   {
      ev.editor.dataProcessor.writer.setRules( 'p',
         {
            indent : false,
            breakBeforeOpen : true,
            breakAfterOpen : false,
            breakBeforeClose : false,
            breakAfterClose : true
         });
   });

答案 1 :(得分:2)

看起来这可能是您的解决方案:

http://dev.ckeditor.com/ticket/3260

答案 2 :(得分:2)

这可能有点远,但我认为这很可能不是ckEditor的设置(因为我过去广泛使用过ckEditor,并没有遇到过这样的问题),而是一个功能(改变)您正在使用的ajax库或数据库库的character 10character 13\n表示法。无论哪种方式,记录和检查在哪一点chr(13)首先被\n替换,如果它在ajax库中,那么只有在PHP代码中解析它才有意义,如果它是在你的数据库脚本中,你需要在那里更改它(我不会太惊讶,因为我知道那些喜欢在数据库中没有“隐藏”字符的人,比如换行符)。当然,如果您尝试将换行符设置为有效格式,如果您根本不关心换行符Lee Taylor,那么这个答案就会出现。

答案 3 :(得分:1)

答案 4 :(得分:1)

我知道这是一个老话题,但我遇到了同样的问题,只是想分享我的解决方案。

我使用jquery的ajax方法,将数据发布到我的php脚本,内容分隔线更改为\ n。

这是我的(解决方法)解决方案,我在php脚本中执行此操作,然后将数据解析到数据库:

if (strpos($content,'\n') !== false) {
    $content = str_replace('\n', chr(13), $content);
}
相关问题