2010-01-19 44 views
3

我有一個使用PHP構建的日曆,其上有事件。如何使用jQuery拖放來刷新PHP數據庫日曆?

我使用jQuery UI來啓用拖放來移動事件。 .droppable()函數附帶一個回調函數,用新信息更新數據庫。但日曆需要刷新,以便從新的數據庫值中讀取日曆。

你可以強制使用jQuery刷新頁面嗎?還是有更好的方法來做到這一點?

回答

1

也許這就是你想要的?

$("div.myCalendarCell").droppable({ 
    addClasses: false, 
    accept: "div.myEvents", 
    activeClass: "active", 
    hoverClass: "hover", 
    drop: function(event,ui) { 
     var myFormData = $(this).find("form.myEventFormData").serialize(); 
     $(this).load("php/myEventManager.php",{"myFormData":myFormData},function(e){ 
      alert("updated"); 
     }); 
    } 
}); 
+0

這很接近,但我不想要提醒。我會玩更多的可選項。謝謝。 – rhodesjason 2010-01-20 20:53:53

+0

警報只是向用戶顯示ajax已完成的一種方法。有很多非阻礙性的方法可以在某些事情完成時提醒用戶。我會建議在ajax調用之前在日曆單元格內轉儲一個ajax spinner,一旦完成,它將被替換爲已加載的內容。 – 2010-01-20 22:45:54

1

您可以對更新數據庫後重新生成日曆的php函數進行ajax調用。

.droppable(function(){ 

    $('#calendar').load('scriptname.php', {variable1: 'var1', etc...}); 

}); 
+0

using .load()? – rhodesjason 2010-01-19 20:58:03

+0

是的,您可以使用.load回調在日曆div加載後執行其他操作。 – jay 2010-01-19 21:03:59

0

location.reload(true)是您正在查找的呼叫。

$('.selector').droppable({ 
    drop: function(event, ui) { location.reload(true); } 
}); 
0

如果你修改而無需刷新數據庫,這意味着你正在做的HTTPXmlRequest沿途某處......爲什麼不找出來,如果你能有一個請求返回的變化,並更新了它-browser?

...因爲如果你想刷新頁面,你應該使用<form>提交,否?因爲你沒有,所以我覺得你想要一些Sweet Rich-UI Ajax Action,而Sweet Rich-UI Ajax Action的原則是「不刷新」。

+0

這是正確的9倍,但在這種情況下,我使用jQuery來驅動拖放,然後我只想在當時刷新一個頁面,只是爲了顯示數據庫中的變化,即拖放創建。這有點罕見,但我知道有一種方法可以在不刷新頁面的情況下進行,如其他答案所示。謝謝! (儘管我更喜歡Hot Rich-UI Ajax Action。) – rhodesjason 2010-01-20 20:52:47