2013-07-12 72 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

相关问题