Я предполагаю, что вы по крайней мере имеете некоторый контроль над клиентскими устройствами и поэтому можете быть уверены, что они используют современный браузер.Поэтому вы можете использовать хранилище данных HTML5 (объект localStorage в Javascript) для записи данных на клиентское устройство.Когда они нажимают кнопки, заполняют формы или что-то еще, вместо загрузки данных на сервер, записывают их в локальное хранилище, используя Javascript.Когда вы это сделаете, посмотрите, можете ли вы загрузить содержимое локального хранилища на сервер (используя Ajax).Если вы можете, отлично, удалите его из локального хранилища;если не оставить его там для следующей попытки.
Вам понадобится добавить кнопку, чтобы сбросить все оставшиеся данные, я думаю, и обучить их использовать их по возвращении на базу, иначе данные останутся не загруженными,И этой кнопке, может быть, всему интерфейсу, потребуется указание на успех и, возможно, сколько еще не было загружено.Или, может быть, страница сбора данных периодически пытается загрузить какие-либо выдающиеся данные.Проблема с этим возникает, если они (пытаются) перейти на какую-то другую страницу с невыполненной загрузкой данных - вы можете в некоторой степени предупредить их, оставив страницу javascript, которая может сообщить им «невыполненная загрузка данных».Поскольку хранилище является постоянным, можно даже закрыть браузер или выключить устройство и повторно открыть страницу сбора данных позже, когда в пределах досягаемости для завершения загрузки - главная проблема заключается в том, что человеческий фактор обеспечивает выполнение этого на самом деле..
А также вам понадобится надежный способ проверки того, что оба конца согласны с тем, что данные были загружены.Недостаточно полагаться только на успешный ответ или отсутствие ответа на вызов Ajax, потому что вы можете его никогда не увидеть, даже если данные были успешно загружены.Один из способов может заключаться в том, чтобы пометить данные идентификатором в конце браузера (возможно, на основе идентификатора сеанса и времени), чтобы, если вы не получили положительный ответ от сервера, вы думали, что он потерпел неудачу в конце браузера, ноесли на самом деле не произошел сбой, сервер сохранил идентификатор, поэтому те же данные, загруженные позже, будут считаться уже завершенными, а не обработанными дважды.
Еще одним преимуществом этого является то, что даже есливы находитесь в пределах досягаемости, но по медленной ссылке пользователю не нужно ждать завершения загрузки, прежде чем переходить к следующему вводу данных.