2013-02-12 81 views
-1

下面是瀏覽器的腳本保存 「edit_body」 字段:CKEditor的 - 內置編輯:瀏覽器的信息不完整的內容

<script> 
$(document).ready(function(){ 
$("#save_editable").click(function(){ 
    var edit_body = $("#edit_body").html(); 
    setTimeout(function(){ 
    $.ajax({ 
    url:'http://my-url.com/my_editor.php?id_to_update=123', 
    type:'POST', 
    data:{edit_body:edit_body}, 
    success:function(data){ 
    if(data=='1'){ 
     alert('Saved'); 
    } 
    } 
    }); 
    },5000); 
}); 
}); 
</script> 

服務器下一步:

if(@$_POST["edit_body"]){ 
$id_to_update=intval($_GET['id_to_update']); 
$edit_body=iconv('UTF-8', 'windows-1251', html_entity_decode($_POST["edit_body"], ENT_QUOTES, "utf-8")); 
if(mysql_query(sprintf('update my_table set body="%s" where id="%s";',$edit_body,$id_to_update)){ 
    print '1'; 
} 
} 

問題是: 當「edit_body」包含大量文本時,它會成功保存,但未滿內容。 瀏覽器越弱,保存的文本就越少。 在這種情況下,我已經使setTimeout函數延遲5秒。但它有一些幫助..

我如何告訴瀏覽器在Ajax post之前等待處理變量「edit_body」?使用的CKEditor的getData()方法來獲取文檔,而不是jQuery的HTML()方法

+0

*較弱的瀏覽器*世界是什麼意思?你看看發送給服務器的是什麼?當你從控制檯/ Fiddler看它時,它是否在發佈請求中?你是否取消了'save_editable'的點擊動作? – epascarello 2013-02-12 13:24:43

+0

當我在瀏覽器中打開了超過20個選項卡時,它工作得更慢,並使用更多時間從頁面中的字段中獲取變量。一切都與服務器端好。我沒有取消任何東西。等待。 – punosound 2013-02-12 14:18:02

回答

1

問題解決了:

var edit_body = CKEDITOR.instances["edit_body"].getData();