2010-07-07 4 views
0

AJAX를 사용하여 관리자 페이지를 만들려고합니다. 따라서 클라이언트가 CKEDITOR에서 정보를 업데이트 할 때 새 페이지로 가져갈 필요가 없습니다. 입력 필드에서 데이터를 가져 오는 것은 .val() 함수를 사용하여 충분히 쉽지만 텍스트 영역이 즉시 업데이트되지 않기 때문에 동일한 기능을 사용할 수 없습니다. 내가 가진 Heres는 지금까지 같이CKEDITOR ajax posts

을 //이) (

<script type="text/javascript"> 
    CKEDITOR.replaceAll(); 
</script> 

가 //이 모든 입력 데이터 및 텍스트 영역

GetData의
$(function() { 
     $("#submit").click(function() { 
      var newsTitle = $("#newsTitle").val(); 
      var editNews = CKEDITOR.instances.editNews.getData(); 
      var contactTitle = $("#contactTitle").val(); 
      var editContact = CKEDITOR.instances.editContact.getData(); 
      var linksTitle = $("#linksTitle").val(); 
      var editLinks = CKEDITOR.instances.editLinks.getData(); 

       $.ajax({ 
        type: "POST", 
        url: "update.php", 
        data: 'newsTitle='+newsTitle+'&editNews='+editNews+'&contactTitle='+contactTitle+'&editContact='+editContact+'&linksTitle='+linksTitle+'&editLinks='+editLinks, 
        cache: false, 
        success: function(){ 
         updated(); 
        } 

       });  

      return false; 
     }); 
    }); 

을 잡기 위해 시도 CKEDITORS에 모든 텍스트 영역 태그를 대체 함수는 경고와 함께 테스트하고 편집자의 데이터를 가져 왔기 때문에 작동하는 것처럼 보였습니다. 그러나 일단 시도하고 업데이트하면 작동하지 않을 것입니다 ...

아이디어가 있습니까? 이것이 인 JS 파일에서

<script type="text/javascript"> 

CKEDITOR.replace('TEXTAREA_ID', { 
    extraPlugins : 'autogrow', 
    removePlugins : 'resize', 
    entities : false 
}); 

</script> 

:

답변

1

다케 jQuery를

http://docs.cksource.com/CKEditor_3.x/Developers_Guide/jQuery_Adapter

Because setting and retrieving the editor data is a common operation, the jQuery Adapter also provides the dedicated val() method:

// Get the editor data. 
var data = $('textarea.editor').val(); 
// Set the editor data. 
$('textarea.editor').val('my new content'); 
+0

방금 ​​어댑터를 사용해 봤는데 val() 메서드를 사용하면 알맞은 코드가 알림에 표시되지만 데이터를 게시하는 것을 여전히 거부합니다. – Ohnegott

+0

여전히 어떤 종류의 함수/객체 일 수 있습니다. '$ ('/ ... ') .val(). toString()'경고가 표시된 컨텍스트를 반환하려고 시도합니다. – RobertPitt

3

이 코드에 대한 CKEditor 기능/어댑터에서 보면 텍스트 영역을 대체 코드와 Jquery Validator Plugin을 사용하고 있습니다 :

항상 텍스트 영역의 ID를 제공 인스턴스 후

CKEDITOR.instances.TEXTAREA_ID.getData(); 

:

$(document).ready(function(){ 

jQuery.validator.messages.required = ""; 

$("#FormID").validate({ 
    submitHandler: function(){ 

     var ContentFromEditor = CKEDITOR.instances.TEXTAREA_ID.getData(); 

     var dataString = $("#FormID").serialize(); 

      dataString += '&ContentFromEditor='+ContentFromEditor;   


     $.ajax({ 
     type: "POST", 
     url: "Yourfile.php", 
     data: dataString, 
     cache: false, 
     success: function(html){ 
      YOU WORK WITH THE RETURN HERE 
     }, 
     error: function(xhr, ajaxOptions, thrownError){ 
      alert(xhr.responseText); 
     } 
    }); 

    return false; 

    } 
}); 

}); 

이대부분의 시간 오류를 생성하는 라인입니다.

ckeditor 웹 사이트 또는 예제에서 얻을 수있는 고유 한 config.js가 있습니다.

1

이 코드를 사용하면 문제가 해결되었습니다. serialize에서 볼 수 있도록 ckeditor를 실행하는 필드를 업데이트했습니다.

$('#form').find('.class').each(function(index) { 
    $(this).val(CKEDITOR.instances[$(this).attr('id')].getData()); 
}); 
+0

감사합니다. . .find ('textarea')를 사용했습니다. 각 (function (index) { $ (this) .val (CKEDITOR.instances [$ (this) .attr ('id')] .getData()); }}) ; –

관련 문제