2013-02-12 3 views
-1

저장할 브라우저의 스크립트입니다 "edit_body"필드 :CKEditor - 인라인 편집 : 브라우저 POST를하지 전체 내용 여기

<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'; 
} 
} 

문제 is : "edit_body"에 많은 텍스트가 포함되어 있으면 성공적으로 저장되지만 이 가득하지 않음 함유량. 브라우저가 약할수록 저장된 텍스트는 적습니다. 이 경우 나는 5 초의 지연 시간으로 setTimeout 함수를 만들었습니다. 그러나 그것은 때때로 도움이되지 않습니다.

어떻게 Ajax 게시물보다 "edit_body"변수를 처리 할 때까지 브라우저가 기다릴 수 있습니까?

+0

* 약한 브라우저를 *이 세상에서 무엇을 의미합니까? 서버로 보내지는 것을 보셨습니까? 콘솔/피들러에서 볼 때 게시 요청에 모든 것이 있습니까? save_editable의 클릭 동작을 취소 하시겠습니까? – epascarello

+0

브라우저에서 20 개 이상의 탭을 열면 더 느리게 작동하고 더 많은 시간이 페이지의 변수에서 변수를 가져옵니다. 서버 쪽에서 모든 것이 괜찮습니다. 나는 아무 것도 취소하지 않을 것이다. 그냥 기다리고있어. – punosound

답변

1

문제가 문서 대신 jQuery의 HTML의() 메소드를 얻기 위해 CKEditor의 GetData의() 메소드를 사용하여 해결 :

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