Как обмениваться данными 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
}