2017-03-06 1 views
1

저는 ckeditor 4.6.2를 사용하고 있으며 편집기에서 내용을 변경하면 아약스 호출을 통해 서버에 다시 게시되지 않는 문제가 발생했습니다.ckeditor는 업데이트 된 내용을 게시하지 않습니다

내 셋업은 다음과 같이이다 : ID #editor1

  • 텍스트 영역이 ckeditor가 적용되었다.
  • 페이지로드시 데이터베이스에서 편집기로 일부 내용을로드하는 데 아약스를 사용합니다 (이 방법은 정상적으로 작동합니다). #sendBtn를 눌러 - 버튼을 제출 내
  • 는 ID #sendBtn

그때 양식 제출을 처리하기 위해 아약스를 사용하여이있다. 게시물은 작동하지만, #editor1의 콘텐츠를 편집 한 경우 원래 콘텐츠 (페이지로드시 편집 내용이 아닌 내용)를 제출합니다.

나는이 게시물 How to ajax-submit a form textarea input from CKEditor?에 십자가에왔다. 내 아약스 호출 전에 허용 된 답변을 추가했습니다. 그래서 제출을 처리하기위한 내 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) { 
      // ... 
     }); 
}); 

을 나는 그것이 원본 콘텐츠가 아닌 업데이트 된 버전을 보여주고있다 /admin/ajax/email에서 POST 데이터를 덤프 PHP를 사용하는 경우.

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

그래서 위의 코드는 아약스 호출하기 전에 완료되지 않는 문제 :

어떤 이상한 것은 내 브라우저 콘솔에서이 작업을 실행하면, 그것은 사물이 작동하는 것처럼 다음 true 및 반환이다 만든거야? 어떻게 처리할까요?

답변

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) { 
      // ... 
     }); 
}); 
관련 문제