我正在學習AJAX,因爲我需要它用於當前項目。當一個新行添加到MYSQL表中時,我想要更新一個Feed。我已經用node.js實現了這一點,但不幸的是我的客戶端服務器不能使用NODE,所以我試圖看看AJAX是否可能。當新行被添加到表中時,使用AJAX更新頁面
謝謝你的幫助!
我正在學習AJAX,因爲我需要它用於當前項目。當一個新行添加到MYSQL表中時,我想要更新一個Feed。我已經用node.js實現了這一點,但不幸的是我的客戶端服務器不能使用NODE,所以我試圖看看AJAX是否可能。當新行被添加到表中時,使用AJAX更新頁面
謝謝你的幫助!
您需要讓客戶端通過polling不斷聯繫服務器,或使用推送技術,例如comet或websockets。否則,您的客戶無法知道新數據何時到達。
彗星和websockets允許實時感受到這個過程,因爲它們實際上一旦將數據發送到用戶客戶端(您連接的瀏覽器)就可以使用,而輪詢它只是您的瀏覽器查詢服務器間隔。
缺點是推送技術和當然需要HTTP Keep Alive的彗星在你的服務器上可能會很沉重,尤其是對於基於流程的服務器,比如apache,它們的最大連接速度會很快被填滿,然後會一直持續到斷開連接。有調整選項和現代設置,但它不是最佳的:問題甚至有一個官方名稱c10k,這是你看到基於事件的服務器最近流行的原因之一。
我不知道MYSQL或PHP在更新時可以將更新推送到頁面的位置。
最好的辦法可能會被用JavaScript運行定時器和檢查數據庫定期查看是否有過任何更新,你的表索引的最後一排
var refreshId = setInterval(function() { checkforUpdates(lastIndex) }, 10000);
傳遞給JavaScript函數和函數調用一個PHP查詢數據庫的任何新行,如果有任何更新返回,使用JavaScript將它們添加到表中。
如果您還希望檢查更新的行,那會有點棘手!
很難回答關於加載的問題,我想這取決於您希望在檢查之間更新數據的程度。此外,如果您正在檢查表格上的所有現有行以進行更新,或者只是查找新記錄。如果你只是在尋找新的記錄,SQL查詢不會花太長時間。 – hireSwish 2012-07-11 02:43:31
它更容易做AJAX的東西用jQuery
$("#update_charges").live("click",function() {
$.ajax(
{
type: "POST",
url: "phpfile_toadd_updaterecord.php",
data: "passvalue="+$('input_field_name').val(),
success: function(msg)
{
$('#result_div').html(msg); //msg contains any test echoed from //phpfile_toadd_updaterecord.php file
}
});//end $.ajax
}
下面
可以成爲你的HTML代碼
<form>
<div id="result_div"></div>
<input type="button" name="update_charges" id="update_charges" />
<input type="hidden" name="input_field_name" id="input_field_name" value="anyvalue_to be passed to php file"/>
</form>
他的問題是關於如何對服務器端的值進行更改,顯示如何獲取值並沒有幫助。 – 2012-07-11 19:08:16
這就是我想...不幸的是我不能使用node.js中如果我沒有使用推送技術,而是每15秒鐘觸擊一次服務器,那麼這會非常耗費資源嗎?什麼是最好的方法? – steeped 2012-07-11 01:48:08
只是想想你的應用程序:真正的時間方面有多重要?如果你有很好的延遲並且很重要,你可以在一個獨立的端口上設置一個node.js服務器(或者其他合適的候選服務器),並讓你的應用頻繁地進行輪詢。 – 2012-07-11 01:53:55