是否可以从HTML5的本地存储中提取数据并保存到服务器数据库?

时间:2013-07-12 10:09:11

标签: php javascript mysql html5 local-storage

我有一个社交网络应用程序的想法,部分想法是将数据从localstorage提取到服务器数据库。这样做的原因是你有一个想法,你想把它放在你的社交应用程序的下一个状态,但你没有任何信号和无线。您在应用程序上写下状态,并将其保存到本地存储区,以便在他们返回可以在线连接手机的地方时使用。

然后他们到达可以上网的地方,然后应用程序检测到localstorage中有更改,然后从那里拉出来并保存到服务器数据库。

这是否可能,如果是这样,您将如何实施它? 如果不可能的话,你认为这可能会在将来的某个时候出现吗?

我期待听到您对此问题的评论和答案,因为我认为这可能是一次非常大的讨论。

2 个答案:

答案 0 :(得分:3)

是的,有可能,为什么不呢?当您从本地存储中提取数据时,数据的工作方式与任何其他Javascript变量一样,没有任何限制可以阻止您将其发送到除缺少Internet连接之外的服务器。

  

你将如何实施它?

首先,您需要检测连接状态,请参阅this question。因此,当用户尝试更新其状态时,它会检查连接是否在线,如果不是,则将其保存到本地存储。

使用链接问题中的方法检测连接何时恢复,然后从本地存储中提取数据并通过将其发送到服务器,然后清除本地存储以防止重复正在发送的数据。

答案 1 :(得分:3)

您可以定期检查Javascript中的navigator.onLine以获取设备的在线状态。请注意,而

  navigator.onLine == false 

安全地告诉您离线设备

 navigator.onLine == true 

并不一定意味着它可以访问互联网并且可以执行请求,只是它连接到某种网络。

一旦你认为设备没有脱机,你就会发送一个ajax请求(我推荐使用jQuery的$ .ajax函数),你可以从localStorage中发布数据

(localStorage.getItem('dataToPull'))

到PHP脚本,然后将其插入MySQL数据库。

如果该ajax请求失败,并且您确定它没有收到PHP / MySQL错误,则可以安全地假设虽然该设备已连接到网络并且navigator.onLine为true,但是没有互联网连接。然后,您可以执行一些错误处理,例如在5分钟内再次轮询设备。