2010-02-03 78 views
0

在我的後端,我使用了jquery 1.4.1和最新的UI 1.8rc1。我定義了幾個按鈕,它們可以做一些事情......一種是使用序列化函數調用一個PHP文件,然後重新加載整個頁面來創建特定類型的頁面。在本地,這總是像一個魅力!但只要我把它提供給我的提供商網絡服務器,它只能工作大約5%的時間。繼承人的代碼: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'); 
} 
}, 

它有趣的是,當我把警報剛剛location.reload部分之前 - 它總是工作。所以似乎有一個時序問題,序列化被執行,但在頁面重新加載之前無法完成。我知道使用序列化的意義是不必重新加載頁面,但我建立一個導航等,所以我需要重新加載。 (想想現在......我真的可以序列化所有東西......無論如何)有沒有簡單的解決方案呢?有沒有像我可以建立一個小計時器,讓它等到序列化完成?這是一個正常的行爲?

回答

1

你需要利用回調在$。員額()方法:

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

不完全相信「這」指的回調函數裏面,所以我會離開執行情況給讀者一個練習。 :-)

+0

「this」指的是按鈕對象所屬的對話框對象。所以要正確,他需要定義類似「var self = this;」的東西在對話框內但在回調之外,然後在回調中使用「self」而不是「this」。 – 2010-02-03 13:12:49

+0

謝謝,我打算建議,但後來質疑是否有更好的方法來避免var x = this。 – roufamatic 2010-02-03 15:57:29

+0

謝謝 - 現在所有的作品都像魅力一樣! 我決定退出所有重新加載並更新回調中的所有div! – 2010-02-09 02:33:30