2017-02-17 3 views
0
$(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(). Пожалуйста, помогите мнеЗначение не устанавливается в CKEditor setData

ответ

0

Вы должны разместить следующий код в успешной части ajax. потому что ваша строка выполняется сначала, а данные поступают в переменную после нее.

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

просто место выше линии ниже этих линий

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

вашей переменной печати на консоль из-за асинхронное поведение AJAX и Java Script. Вы можете следить за пост, чтобы понять: 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); 
        } 

       }); 

      }); 
     } 

    }); 
+0

Ok Дипак. Я понимаю, что это связано с asyn-поведением ajax и javascript. Я поместил код в успешную часть ajax, но я не получаю ожидаемый результат – suna

+0

Я обновляю код комментариями. надеюсь, вам это поможет –

+0

No Deepak. Кажется, это не работает. Спасибо за быстрый ответ!!! – suna