如何使用ajax在CKEDITOR中动态加载模板?

时间:2016-08-19 09:02:40

标签: javascript jquery ajax ckeditor

我有一个用于保存模板的数据库表。所有都是HTML格式,我想使用AJAX获取特定模板。

这是我的代码:

HTML部分

<div class="form-group">
    <label>Select Template: <span class="text-info">(*Optional)</span></label>
    <select class="form-control" name="load_template" id="load-template">
        <?php if(count($templates) > 0) { ?>
        <option value="">-- load template --</option>
        <?php foreach($templates as $temp) { ?>
            <option value="<?php echo $temp['id']; ?>"><?php echo $temp['template_name']; ?></option>
        <?php } ?>
        <?php } else { ?>
            <option value="">There are no saved templates</option>
        <?php } ?>
    </select>
</div>

JS部分

$('#editor').ckeditor();

$('#load-template').on('change', function(){
    var id = $(this).val();
    //do some ajax to get content...
    console.log(id);
    $.ajax({
        url: "<?php echo site_url('users/user/getLoadTemplate'); ?>",
        data: {template_id: id},
        dataType: 'html',
        type: 'post',
        beforeSend: function() {},
        success: function(template) {
            $('#editor').html(template);
            console.log(template); //ok it shows the HTML but how can I load it in my ckeditor?
        },
        error: function() {
            alert('Unable to load template. Error in AJAX');
        }
    });
});

PHP方面

public function getLoadTemplate() {
    $type = $this->input->post('template_id');
    $get_template = $this->Users_model->getLoadTemplate($type);
    echo $get_template['template'];
}

如何在CKEDITOR中加载我的ajax响应HTML?

1 个答案:

答案 0 :(得分:1)

而不是这个

$('#editor').html(template);

试试这个

CKEDITOR.instances['editor'].insertHtml(template) 
                   or
CKEDITOR.instances.editor.insertHtml(template)