在CKEditor setData中未设置值

时间:2017-02-17 06:25:35

标签: javascript jquery ckeditor

$(document).on('change', "input[name='child']", function() {
    CKEDITOR.config.contentsCss = 'lib/bootstrap/css/bootstrap.css', 'lib/css/myStyle.css';
    CKEDITOR.config.extraPlugins = 'font';
    var pjID = {};
    var pjDesc = [];
    $("input[name='child']:checked").each(function() {
        pjDesc.push($(this).val());
    });
    if ($(this).prop("checked") == true) {
        pjID.projectsk = $(this).val();            
        $.ajax({
            url: 'sample.php',
            type: 'POST',
            data: pjID,
            success: function(result) {
            var response = JSON.parse(result);                    
            var content = CKEDITOR.instances.projectEditor.getData();         
            CKEDITOR.instances.projectEditor.setData(content + response.data[0].project_desc);            
          },
            error: function(error) {
                console.log(error);
            }
        });
    }
    else if ($(this).prop("checked") == false) {              
        var content = "";
        var contentVal = "";           
        $.each(pjDesc, function(key, val) {
            pjID.projectsk = val;              
            $.ajax({
                url: 'sample.php',
                type: 'POST',
                data: pjID,                    
                success: function(result) {
                    var response = JSON.parse(result);
                    console.log(response);
                    content = response.data[0].project_desc;
                    contentVal = contentVal+"<br>"+content;
                    console.log(contentVal);               
                },
                error: function(error) {
                    console.log(error);
                }

            });
            console.log('contentVal',contentVal);
            CKEDITOR.instances.projectEditor.setData(contentVal);
        });
    }
    CKEDITOR.replace('projectEditor');
});

上述代码完全有效,除了这行CKEDITOR.instances.projectEditor.setData(contentVal);. 我在控制台中得到了确切的输出。但是我无法在ckeditor中设置值。我尝试过使用insertHtml,insertText和foocallback()。请帮助我

1 个答案:

答案 0 :(得分:0)

您必须将以下代码放在ajax的成功部分中。因为你的行首先执行,数据在它之后变量。

 console.log('contentVal',contentVal);
 CKEDITOR.instances.projectEditor.setData(contentVal);

只是放在这些行下方的行上方

contentVal = contentVal+"<br>"+content;
console.log(contentVal);

由于ajax和java脚本的异步行为,您的变量在控制台上打印。您可以按照帖子了解:https://stackoverflow.com/a/23667087/2651863

我要修改你的代码:

    $(document).on('change', "input[name='child']", function() {
        CKEDITOR.config.contentsCss = 'lib/bootstrap/css/bootstrap.css', 'lib/css/myStyle.css';
        CKEDITOR.config.extraPlugins = 'font';
// its better to initilize CKeditor immidiate after configuration
 CKEDITOR.replace('projectEditor');
        var pjID = {};
        var pjDesc = [];
        $("input[name='child']:checked").each(function() {
            pjDesc.push($(this).val());
        });
        if ($(this).prop("checked") == true) {
            pjID.projectsk = $(this).val();            
            $.ajax({
                url: 'sample.php',
                type: 'POST',
                data: pjID,
                success: function(result) {
                var response = JSON.parse(result);                    
                var content = CKEDITOR.instances.projectEditor.getData();         
                CKEDITOR.instances.projectEditor.setData(content + response.data[0].project_desc);            
              },
                error: function(error) {
                    console.log(error);
                }
            });
        }
        else if ($(this).prop("checked") == false) {              
            var content = "";
            var contentVal = "";           
            $.each(pjDesc, function(key, val) {
                pjID.projectsk = val;              
                $.ajax({
                    url: 'sample.php',
                    type: 'POST',
                    data: pjID,                    
                    success: function(result) {
                        var response = JSON.parse(result);
                        console.log(response);
                        content = response.data[0].project_desc;
                        contentVal = contentVal+"<br>"+content;
                        console.log(contentVal);  
                // set data when actually it arrive
                console.log('contentVal',contentVal);
                CKEDITOR.instances.projectEditor.setData(contentVal);             
                    },
                    error: function(error) {
                        console.log(error);
                    }

                });

            });
        }

    });
相关问题