2010-02-03 6 views
0

내 백엔드에서 jquery 1.4.1과 최신 UI 1.8rc1을 사용하고 있습니다. 몇 가지 버튼을 정의했습니다 ... 하나는 PHP 파일을 호출 한 다음 전체 페이지를 다시로드하는 serialize 함수를 사용하여 특정 유형의 페이지를 만드는 것입니다. 로컬에서는 항상 매력처럼 작동합니다! 하지만 내 제공자 웹 서버에 올려 놓는 즉시 약 5 % 만 작동합니다. Heres는 코드 : 난 그냥 location.reload 부분 전에 경고에 넣어 때jQuery AJAX 타이밍 문제

buttons: { 
'Seite erstellen': function() { 
$.post("webadmin/pages.create.serialize.php",$("#page-form").serialize()); 
$(this).dialog('close'); 
location.reload(true); 
}, 
'Abbrechen': function() { 
$(this).dialog('close'); 
} 
}, 

흥미 얻는다 - 그것은 항상 작동합니다. 따라서 직렬화가 실행되지만 페이지를 다시로드하기 전에 완료 할 수없는 타이밍 문제가있는 것으로 보입니다. 내가 serialzing을 사용하여 페이지의 페이지를 다시로드하지 말아야한다는 의미를 알고 있지만, 그래서 다시로드해야 탐색 등을 빌드합니다. (지금 생각해 보면 ... 모든 것을 직렬화 할 수 있습니다 ... 어쨌든) 이것에 대한 간단한 해결책이 있습니까? 직렬화가 완료 될 때까지 기다릴 수 있도록 빌드 할 수있는 작은 타이머 같은 것이 있습니까? 이것은 정상적인 행동입니까? 그래서 같은 구현을 떠날거야 "이"콜백 함수의 내부를 말합니다 무엇

$.post(
     "webadmin/pages.create.serialize.php", 
     $("#page-form").serialize(), 
     function(data, textStatus, xhr) { 
      alert("I'm done loading now!"); 
     } 
); 

정확하게 확실하지 :

답변

1

당신은() 메서드는 $ .post에 콜백을 활용할 필요 독자에게 운동. :-)

+0

"this"는 buttons 객체가 일부인 대화 상자 객체를 나타냅니다. 그래서 그는 "var self = this;"와 같은 것을 정의 할 필요가 있습니다. 대화 상자의 내부이지만 콜백 외부에서 호출 한 다음 콜백 내부에서 "this"대신 "self"를 사용하십시오. –

+0

고마워요,하지만 제안 할 것이지만 var x =이 비트를 피하는 더 좋은 방법이 있는지 의문을 제기했습니다. – roufamatic

+0

고마워요 - 모든 작품은 지금 매력처럼! 그리고 다시로드를 모두 종료하고 콜백의 모든 div를 업데이트하기로 결정했습니다. –