Вопрос по javascript, jquery, jquery-mobile – Как хранить переменные между страницами jQM?

2

Как передать переменную типа username между двумя страницами jQueryMobile?

или две обычные страницы в этом отношении, поскольку переменная как глобальная не работает, так как при следующем включении она вернет переменную в ноль.

Как передать переменную глобальной переменной между двумя html-страницами?

Я думал, что jQuery Mobile - это одностраничные приложения. Pointy
Ты можешь использовать куки. Jay Blanchard
@ Pointy JQM извлекает внешнюю страницу и прикрепляет ее к DOM, но ее можно использовать для многостраничных приложений Jquerymobile.com / демки / 1.1.0 / документы / страницы / страниц anatomy.html Jack

Ваш Ответ

4   ответа
6

вы тоже можете хранить объекты. Пример:

var userInfo = {
            "username": "Bob",
            "roleName": "Admin",
            "image": "img/userPic.jpg",
        };

        //Store the object in local storage
        localStorage.setItem('loggedUser', JSON.stringify(userInfo));

затем на другой странице вы можете просто сделать:

var userInfo = JSON.parse(localStorage.getItem("loggedUser"));
var userName = userInfo.username;
Я думал об использовании localStorage, я хотел избежать поиска localStorage, так как мне придется использовать одни и те же данные много раз. Мне было интересно, есть ли в appcache механизм для хранения переменных, поскольку приложение должно работать в автономном режиме ... localStorage, вероятно, является более простым решением. Благодарность
1

ю на стороне клиента, вы можете использовать localStorage (при условии, что они находятся в одном домене), или вы можете использовать куки.

Если вы решите использовать маршрутизацию на стороне клиента, для JQM есть специальный плагин, который связан с различными событиями страницы JQM

https: //github.com/azicchetti/jquerymobile-route

Спасибо за интересную ссылку. Astronaut
1

если отключите ajax для гиперссылки между двумя страницами.

<a href="nextPage.php?username=joe" data-ajax="false">Next page</a>

Вы упускаете полезные функции мобильных переходов jQuery, но, по крайней мере, можете успешно передавать переменные между страницами.

Обновить

От документация:

Передача параметров между страницами:

jQuery Mobile не поддерживает передачу параметров запроса на внутренние / встроенные страницы ...

Далее в документации предлагаются два плагина, которые я не пробовал.Page плагин params а такжеjquery плагин мобильной маршрутизации.

Обязательно ознакомьтесь со страницей документации, указанной выше, чтобы узнать, почему передача параметров не должна работать, но если вы загружаете страницу без хеширования (отключая поведение ajax), то у вас все будет хорошо - по крайней мере, по моему опыту .

Внутри одной и той же страницы они имеют одинаковый контекст, поэтому проблем там нет. Только когда мне нужно получить доступ к идентификатору пользователя для выполнения запросов к базе данных websql, проблема становится очевидной. Я попробую заглянуть в документацию. Спасибо Astronaut
@ AdamSurfari; Я не уверен, что ты имеешь в виду; мой ответ (в начале) относится к передаче имени пользователя на вторую страницу. Я могу ошибаться, но я истолковал документацию как означающую, что все страницы вашего сайта являются «внутренними» и все на другом сервере будет «внешним». Таким образом, отключив поведение по умолчанию data-ajax="false") вы сможете передать параметр на вторую страницу. В противном случае вторая «внутренняя» страница будет загружена с использованием специальной мобильной платформы jquery, в которой параметры запроса могут быть потеряны описанным методом. veeTrain
0

как JQM хранит свою собственную конфигурацию. Просто создайте свой собственный объект javascript в $ .mobile в 'mobileinit' и используйте его для своих глобальных переменных:

    <!DOCTYPE html> 
    <html>
    <head>

        ...

        <script> //position before jqery.mobile.js is important for 'mobileinit' to fire
            $( document ).on( "mobileinit", function( event ) {

                //create global variable storage
                $.mobile.YourApplicationNameHere = {};

                //use it like this anywhere in your code:
                $.mobile.YourApplicationNameHere.globalVar1 = 1;
                $.mobile.YourApplicationNameHere.globalVar2 = 2;
                console.log("globalVar1 = " + $.mobile.YourApplicationNameHere.globalVar1);

            });
        </script>

        <script src="jquery/jquery.mobile-1.4.5.min.js"></script>

        ...

    </head>
        ...
    </html>

Вы можете инициализировать свои глобальные переменные где угодно, но «mobileinit» - это самая ранняя точка инициализации JQM.

Похожие вопросы