Как обмениваться данными json между мобильными страницами jquery без использования оконного объекта

На странице index.html на событии "pageinit" я получаю все данные о сотрудниках из серверной части.

Получив данные о сотрудниках, я сохраняю их в переменной "сотрудники" для последующего доступа.

Пример кода выглядит так:

var employees;
var url = "/employee-jquerymobile/services/";

$("#employeeListPage").bind('pageinit', function() {
    var method = url + "getemployees.php";
    $.getJSON(method,  function(data) {
        var i, emp;
        employees = data.items;     
        var $employeeListView = $("#employeeListView");
        $employeeListView.find("li").remove();      

        for (i=0; i<employees.length; i++) {
            emp = employees[i];         
            $employeeListView.append(
                "<li><a data-transition='slide' href='employeedetails.html?id=" +  emp.id +  "'>" + emp.firstName + "</a></li>"
            );      
        }

        $employeeListView.listview("refresh");

    });
});

У меня есть еще один файл view / html под названием "employeedetails.html", где я хочу показать информацию уважаемого пользователя.

Пример кода для employeedetails.html приведен ниже:

<div id="detailsPage" data-role="page" data-add-back-btn="true">

    <div data-role="header">
        <h1>Employee Details</h1>
    </div>

    <div data-role="content"> 
        <img id="employeePic"/>
        <div id="employeeDetails">
        <h3 id="fullName"></h3>
        <p id="employeeTitle"></p>
        <p id="city"></p>
    </div>

</div>

В "employeedetails.html" я не могу получить доступ к ранее сохраненной переменной "employee". Я проверил в консоли, и он дает "неопределенный".

Я искал в Интернете и обнаружил, что несколько парней, предложенных с помощью идентификатора сотрудника, я снова вызываю сервисную службу и получаю данные сотрудника.

Обновление: я могу получить доступ к переменной, если я сделаю это глобально, используя объект окна. Но это рекомендуемый способ сделать данные общедоступными. Есть ли другой способ обмена данными между страницами или представлениями в jQuery Mobile. Последний вариант - локальное хранилище / хранилище сеансов, но есть ли другие варианты

Я много пробовал, но не получилось. Любая помощь будет принята с благодарностью, заранее спасибо.

1 ответ

Используйте sessionStorage:

...
$.getJSON(method,  function(data) {
    var i, emp;
    sessionStorage.employees = JSON.stringify(data.items);
...

Тогда вы можете получить эти данные обратно, используя:

var employees=JSON.parse(sessionStorage.employees);

РЕДАКТИРОВАТЬ: Чтобы проверить наличие "sessionStorage" в браузере:

if (window.sessionStorage){
    ... //do whatever
}
Другие вопросы по тегам