【问题标题】:CKEditor inserts \n automaticallyCKEditor 自动插入\n
【发布时间】:2012-07-03 23:31:34
【问题描述】:

我的问题是CKEditor,它在我提交数据时添加了\n。

要获取我正在使用的数据:

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

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

<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

我删除了一些验证代码等,因为它并不重要。

【问题讨论】:

  • 你能展示你在数据库中处理和存储数据的部分吗?字符 13 只是 \n 但如果它们在数据库中显示为文字 \n。可能是您处理数据的方式有问题。
  • 已添加。我没有看到代码有任何问题,但也许我遗漏了一些东西..
  • 验证码是否改变$data['content']?如果打开了magic_quotes,我想知道它可能会导致\n 字符与mysql_real_escape_string 结合使用。不确定。但它开启了吗?
  • 我已经使用JSLint 的建议清理了您的 AJAX 代码。如果这有帮助,请告诉我。干杯!

标签: javascript ckeditor


【解决方案1】:

这可能会有所帮助。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 问题在那里没有解决。他说他在获取数据时使用了nl2br()。我只想在插入数据库之前删除 '\n' 。我已经在代码中有&lt;br /&gt; 或&lt;p&gt;。
    【解决方案3】:

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

    【讨论】:

    • 首先谢谢你,经过一些测试,问题不是你说的CKEditor。我认为这与 Ajax (我正在使用 jQuery)有关,因为如果我不使用 ajax,该操作运行良好。无论如何,ajax代码很简单(我编辑了我的主要帖子并在那里发布)..我没有看到代码有任何问题,您有什么建议吗?
    • 在这种情况下,您应该简单地将其解析回后端。顺便说一句,您是否可能使用 GET 而不是 POST 请求,因为在 GET 请求中肯定不可能使用换行符。
    【解决方案4】:

    【讨论】:

      【解决方案5】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 2020-12-27
        • 2017-06-14
        相关资源
        最近更新 更多