2017-03-06 74 views
1

我正在使用ckeditor 4.6.2並遇到了一個問題,如果我更改編輯器中的內容,它們不會通過ajax調用回發到服務器。ckeditor不會發布更新的內容

我的設立是這樣的:

  • textarea的ID爲#editor1已申請就可以了CKEditor的。
  • 在頁面加載我使用ajax從數據庫加載一些內容到編輯器(這一切都正常)。
  • 我的提交按鈕的ID爲#sendBtn

然後我使用AJAX來處理表單提交 - 按#sendBtn。這篇文章的作品,但如果我編輯了#editor1內容,它會提交原始內容 - 頁面加載時有什麼,而不是編輯的內容。

我來過這篇文章How to ajax-submit a form textarea input from CKEditor?。我在ajax調用之前添加了接受的答案。所以,我的處理提交的jQuery看起來是這樣的:

$('#sendBtn').click(function(e) { 
    e.preventDefault(); 
    $('#sendBtn').prop("disabled", true); 
    var dataString = $("#emailForm").serialize(); 

    /** 
    * https://stackoverflow.com/questions/3256510/how-to-ajax-submit-a-form-textarea-input-from-ckeditor 
    */ 
    for (instance in CKEDITOR.instances) 
     CKEDITOR.instances[instance].updateElement(); 

    $.ajax({ 
     url: "/admin/ajax/email", 
     data: dataString, 
     method: "POST", 
     }).done(function(data) { 
      // ... 
     }); 
}); 

如果我使用PHP在/admin/ajax/email轉儲POST數據則顯示原來的內容,而不是更新的版本。

什麼奇怪的是,如果我在我的瀏覽器控制檯運行它,它返回true然後事情似乎工作:

for (instance in CKEDITOR.instances) 
    CKEDITOR.instances[instance].updateElement(); 

所以是問題,上面的代碼是不是Ajax調用之前完成是做成?我將如何處理?

回答

0

好一點遲到。

當你的(非常有用)參考文獻指出,必須更新CKEDITOR情況你觸摸的形式之前,所以:

$('#sendBtn').click(function(e) { 
    e.preventDefault(); 
    $('#sendBtn').prop("disabled", true); 

    // This before: 
    for (instance in CKEDITOR.instances) 
     CKEDITOR.instances[instance].updateElement(); 

    // Then this: 
    var dataString = $("#emailForm").serialize(); 

    $.ajax({ 
     url: "/admin/ajax/email", 
     data: dataString, 
     method: "POST", 
     }).done(function(data) { 
      // ... 
     }); 
});