Вы здесь

Возможность сохранить вводимую информацию в случае проблем с хостингом

0

Добрый день.

Хочу проконсультироваться по одному вопросу.

Сейчас намечается один сервис на Drupal 7. В нем предполагается оперативный ввод информации следующим образом.

Ввод информации планируется делать через смартфон или планшет. Есть список неких терминов (в виде ссылок или кнопок или еще чего). Человек нажимает на элемент списка и на сервер через ajax отправляется информация о том, что в такое-то время была был выбран такой-то элемент.
Причем, время здесь важно. Если человек нажмет не в то время, то это уже, скажем так, очень плохо.

А теперь вопрос.
Допустим, при попытке нажатия возникают какие-то проблемы (например, сервер упал, на смартфоне Интернет сбоит и т.д.). Каким образом лучше действовать, чтобы эти проблемы обойти ? И можно ли обойти эти проблемы, проектируя работу с клиентской частью через браузер ?

Или нужно изначально ориентироваться на разработку приложения для смартфона ? То есть, клиент работает с приложением, данные отсылаются в БД. Ну а сервер вместе с БД можно разрабатывать как на Drupal, так и нет.
Ну а если нет коннекта к БД, то данные сохраняются, к примеру, на смартфоне, а далее при нормализации связи, отправляются пакетом в БД.

Или все-таки можно этот вопрос решить, не прибегая к разработке приложения ? Может быть, найти или настроить хостинг, чтобы вероятность сбоя стремилась к нулю, ну а проблемы с Интернетом у пользователей - это уже второй вопрос.

Версия Drupal: 
7.x
Категория: 
AJAX
Вопрос задан 04.05.2016 - 16:52

Ответы

0

Сохраняйте данные в localStorage. Важно, чтобы браузер был открыт не в приватном режиме, а то при закрытии ничего не сохранится.

Для новых сафари есть нюанс: если включен режим private mode, то обращение к localStorage дает ошибку скрипта, несмотря на то, что window.localStorage существует.
Поэтому перед использованием проверяйте поддержку локального хранилища примерно так:

localStorageSupported = false;
if (window.localStorage) {
    try {
        var test_num = (Math.random()).toString();
        localStorage.setItem('localStorageTest', test_num);
        if (localStorage.getItem('localStorageTest') === test_num) {
            localStorageSupported = true;
        }
    } catch (err) {}
}

Еще погуглите js определение режима браузера (приватный или нормальный).

На caniuse есть несколько issues: http://caniuse.com/#search=localstorage

Ответ дан 04.05.2016 - 20:04

Спасибо большое за развернутый ответ.

А вот не знаете, современные всевозможные браузеры под Андроид, как правило, поддерживают localStorage ?

Комментарий оставлен 04.05.2016 - 21:02

Насчет поддержки опять таки смотрите здесь:
http://caniuse.com/#search=localstorage

Все современные (и не очень) поддерживают. Встречал исключения. Но там такие исключения, что их можно не учитывать.
localStorage даже в IE8 работает.
Главный "враг" — приватный режим браузера.

Комментарий оставлен 04.05.2016 - 21:25

P. S.
Про localStorage я написал предположив, что данных много.
Если не много — можете и в куки сохранить.

Комментарий оставлен 04.05.2016 - 21:27