ajax ile ckeditor html veri gönderimi

Ajax çalışan bir forum üzerinde ckeditör ve benzeri bir editör kullanıyor ve post sonucunu eksik alıyorsanız çözüm bu satırlar arasında olabilir. Nitekim dataType html olarak kullanmama rağmen unutulan bir eksik yüzüne 30 dk kayıp ettim yani uğraştım biraz.

name ve id değeri açıklama olan bir textareayı ckeditor olarak kullandım. Normalde bilindik metinler içeren formumda herhangi bir sıkıntı yaşamaz iken table ve bolca html tag olan büyük bir data aktarılma işleminde datanın php tarafında yarısının olmadığını görünce bu makaleyi aynı duruma düşenler için yayınlama gereği duydum.

textarea yı ckeditor olarak uygulamak için

CKEDITOR.replace("aciklama"); 

tanımlası yapmanız yeterli tabi ckeditorun kendi js dosyasını import ettikten sonra

form submit işlemi sırasında formu serialize edip ajax ile post etme işlemi yapacak iseniz serialize metodundan önce

for(var editorler in CKEDITOR.instances){
    CKEDITOR.instances[editorler].updateElement();
}

yukardaki gibi işlem yapabilirsiniz. editör içerisinde bulanan kodlar normalde tanımladığınız textarea lar ile post edilecektir.

Form olmadan sadece editörün içeriğini post etmek gibi bir ihtiyacınız olursa

var editor = CKEDITOR.instances.aciklama;
var icerik = editor.getData();
var forms = "aciklama2="+icerik;

tek fark icerik adlı değişkenimi encodeURIComponent metodu ile encode etmiş oldum. Sizinde anlayacağınız üzere kod içerisinde bulunan özel karakterleri özellikle & başta olmak üzere dönüştürmüş ve sorunsuz bir post işlemi gerçekleştirdim.

İşlem sırasında kullanmış olduğum kod

var editor = CKEDITOR.instances.aciklama;
var icerik = editor.getData();
var forms = "aciklama2="+encodeURIComponent(icerik);
var sc = "type=command&object=article&action=save&"+forms;
$.ajax({type: 'POST', url: 'index.php', dataType:"html", data: sc,  success: function(response) {
     $("#formSonuc").html(response);
}, error: function (req, status, error) {}});

Burda ara