通过AJAX发送时,CKEditor数据会截断

时间:2014-09-10 09:36:56

标签: javascript jquery ajax ckeditor

我正在使用CKEditor版本4并通过ajax调用从编辑器发布数据,但有时所有数据都成功发布,有时它只是截断它。到目前为止,我知道这背后的原因是在编辑数据时它会添加“”,这会导致截断。任何帮助如何彻底解决这个问题?

我的代码

<script type="text/javascript">
     var editor = CKEDITOR.replace('message');
     function checkSubmit() {

            for(var instanceName in CKEDITOR.instances){
                CKEDITOR.instances['message'].updateElement();
            }

            var dataString = "action=<?php echo $_REQUEST['action']; ?>" + 
                "&id_user=<?php echo $_REQUEST['id_user']; ?>" +
                "&sub_id=<?php echo $_REQUEST['subject_id']; ?>" +
                "&subject_id=<?php echo $_REQUEST['actual_subject_id']; ?>" +
                "&message="+ CKEDITOR.instances['message'].getData()+
                "&subject_name="+$("#subject").text() +
                "&occurence_name="+$("#occurency").text();
            $.ajax({
                type: "POST",
                url: "data/user-student-data.php",
                data: dataString,
                success: function(data) {
                    // close window
                    parent.closeDistributeModal( 1, "<?php echo $_REQUEST['action']; ?>", <?php echo $_REQUEST['id_user']; ?>,<?php echo $_REQUEST['subject_id']; ?> );
                }
            });
        }

</script>

1 个答案:

答案 0 :(得分:0)

这是收集数据的一种非常困难的方法。试试这个:

var data = {};
data.subject_id = '<?php echo $_REQUEST['actual_subject_id']; ?>';
data.id_user = '<?php echo $_REQUEST['id_user']; ?>';
data.action = '<?php echo $_REQUEST['action']; ?>';
data.sub_id = '<?php echo $_REQUEST['subject_id']; ?>';
data.occurence_name = $("#occurency").text();
data.subject_name = $("#subject").text();
data.message = CKEDITOR.instances['message'].getData();

$.ajax({
    type: "POST",
    url: "data/user-student-data.php",
    data: data,
    success: function(returnedData) {
        // whatever you had here
    }
});

同时

// You can remove the for completely.. THIS:
for(var instanceName in CKEDITOR.instances){
    CKEDITOR.instances['message'].updateElement();
}

// Is the same as this (you don't use the instanceName variable at all)
CKEDITOR.instances['message'].updateElement();