我假设您至少可以控制客户端设备,因此可以确定它们使用的是现代浏览器。因此,您可以使用 HTML5 数据存储(Javascript 中的 localStorage 对象)在客户端设备上记录数据。当他们按下按钮、填写表格或其他内容时,而不是将数据上传到服务器,而是使用 Javascript 将其写入本地存储。完成后,看看是否可以将本地存储的内容上传到服务器(使用 Ajax)。如果可以的话,很好,将其从本地存储中删除;如果不留在那里进行下一次尝试。
我认为,您需要添加一个按钮来刷新任何剩余的数据,并训练他们在返回基地时使用它,否则数据将不会上传。那个按钮,也许是整个界面,需要一个成功的指示,也许还有多少还没有上传。或者可能让数据收集页面定期尝试上传任何未完成的数据。如果他们(尝试)转到其他数据上传未完成的页面,则会出现问题 - 您可以通过在离开页面时发出一个 javascript 事件来在某种程度上警告他们,该事件可以告诉他们“数据上传未完成”。由于存储是永久的,甚至可以关闭浏览器或关闭设备,
此外,您需要一种可靠的方法来检查两端是否同意数据已上传。仅仅依靠 Ajax 调用的成功响应或缺少响应是不够的,因为即使数据已成功上传,您也可能永远看不到它。一种方法可能是在浏览器端使用 ID 标记数据(可能基于会话 ID 和时间),这样如果您没有从服务器得到肯定的响应,您认为它在浏览器端失败了,但是如果它实际上没有失败,则服务器已经存储了 id,因此稍后再次上传的相同数据将被视为已经完成,因此不会被处理两次。
这样做的另一个好处是,即使您在范围内但链接速度较慢,用户也不必等待上传完成即可继续下一个数据输入。