1

私の問題は、データを送信する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

重要ではないため、検証などのコードをいくつか削除しました。

4

5 に答える 5

3

これは役立つかもしれません。

CKEDITOR.on( 'instanceReady', function( ev )
   {
      ev.editor.dataProcessor.writer.setRules( 'p',
         {
            indent : false,
            breakBeforeOpen : true,
            breakAfterOpen : false,
            breakBeforeClose : false,
            breakAfterClose : true
         });
   });
于 2012-07-13T07:05:44.983 に答える
2

これは少し遠回りかもしれませんが、これは ckEditor の設定ではなく (過去に ckEditor を広範囲に使用し、そのような問題は発生しなかったため)、むしろ機能(character 10および使用している ajax ライブラリまたはデータベース ライブラリのいずれかの表記)。いずれにせよ、ログに記録して、どの時点で置き換えられるかを調べますcharacter 13\nchr(13)\nそもそも、それが ajax ライブラリにある場合は、それを解析して php コードに戻すだけで意味があり、データベース スクリプトにある場合は、その内部のどこかで変更する必要があります (あまり驚かないでしょう)。 、データベースに改行などの「隠し」文字を入れないことを好む人のことを私は知っています)。もちろん、この回答は、改行を有効な形式にしようとしている場合にのみ有効です。改行を気にしない場合は、Lee Taylor回答が適切です。

于 2012-07-06T11:21:33.440 に答える
2

これがあなたの解決策のようです:

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

于 2012-07-03T23:39:49.987 に答える
1

この ckeditor 出力フォーマッタを参照してください: http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Output_Formatting

また、この回答が役立つ場合があります: CKEditor で <p> を追加するときに不要な改行文字を削除する

于 2012-07-10T23:43:37.263 に答える