2013-07-12 73 views
5

我有一個社交網絡應用程序的想法,部分想法是將數據從本地存儲拉到服務器數據庫。原因是這樣的,你有一個想法,你想把它放在你的社交應用程序的下一個狀態,但你沒有信號和無線的任何地方。您在應用程序中寫出狀態並將其保存到本地存儲以供他們回到可以在線連接手機的地方使用。是否可以從HTML5的本地存儲中提取數據並保存到服務器數據庫?

然後,他們到了一個他們可以上網的地方,然後應用程序檢測到本地存儲發生了變化,然後從那裏取出並保存到服務器數據庫。

這是否可能,如果是的話,你會如何去實施它? 如果完全不可能,你認爲這可能是未來的某個時候?

我期待聽到您對本文的評論和回答,因爲我認爲這可能是一個很大的討論。

+0

是的,這是可能的。這正是有多少web應用程序使用本地存儲(例如離線Gmail)。 – eggyal

回答

3

是的,這是可能的,爲什麼不呢?當您從本地存儲中獲取數據時,數據與其他任何Javascript變量一樣工作,沒有任何限制會阻止您將其發送到服務器,而不是缺少Internet連接。

你將如何去實現它?

首先,您需要檢測連接狀態,請參閱this question。因此,當用戶嘗試更新他們的狀態時,它會檢查連接是否在線,如果不是,則將其保存到本地存儲。

使用鏈接問題中的方法來檢測連接何時恢復,並在此時從本地存儲中提取數據並通過將其發送到服務器,然後清除本地存儲以防止發送重複數據。

+0

非常感謝您回答這個問題,我Google搜索了一下,沒有發現任何東西,所以這對我有很大的幫助。謝謝。:) – CheckeredMichael

3

您可以定期在您的Javascript中檢查navigator.onLine以獲取設備的在線狀態。請注意,雖然

navigator.onLine == false 

安全地告訴你離線的設備,

navigator.onLine == true 

並不一定意味着它可以訪問互聯網,並能夠執行請求,只是它連接到某些網絡。

一旦你認爲設備未處於脫機狀態,你會送一個Ajax請求(我建議使用jQuery的$就功能),你從你的localStorage

(localStorage.getItem('dataToPull')) 

POST數據到PHP腳本,然後將它插入你的MySQL數據庫。

如果ajax請求失敗,並且您確定它沒有收到PHP/MySQL錯誤,則可以安全地假設儘管設備已連接到網絡,並且navigator.online正確,但沒有互聯網連接。然後你可以做一些錯誤處理,例如在5分鐘內再次輪詢設備。

+0

謝謝你,這將幫助我。 – CheckeredMichael

相關問題