Передача переменной javascript на следующую страницу без вмешательства со стороны сервера? - PullRequest
1 голос
/ 26 марта 2012

Я делаю веб-приложение с PhoneGap. Вот мое нынешнее препятствие:

На первой странице пользователь выбирает широту и долготу, затем нажатия продолжаются. С некоторым хорошим действием GET на форме и парсером JavaScript на следующей странице, следующей странице передаются координаты lat и lng. На этой новой странице пользователю предлагается ввести радиус. С помощью того же метода радиус передается на последнюю страницу, на которой отображается карта Google с кругом из координат и радиуса.

Но проблема в том, что когда я передаю радиус на последнюю страницу, он, очевидно, только передает радиус. Как я могу передать символы lat и lng со второй страницы, которые не являются частью информации формы? Они уже созданы. Я знаю, что очевидное решение состоит в том, чтобы поместить все три переменные на одной странице, но по глупым причинам вне моего контроля это должно быть так.

Таким образом, возникает вопрос: как передать информацию, которая существует в виде переменной в javascript, на следующую страницу? Это не часть формы. Просто переменная.

Ответы [ 3 ]

1 голос
/ 26 марта 2012

Все, что вам нужно сделать, это добавить пару скрытых элементов ввода в форму (<input type="hidden" />).

Это можно сделать несколькими способами.Самое короткое - использовать библиотеку (пример кода - jQuery):

$('<input type="hidden" name="lat" />').val(latitudeValue).appendTo(formSelector);
$('<input type="hidden" name="lng" />').val(longitudeValue).appendTo(formSelector);

Raw JS немного длиннее, но не особо сложен:

//I haven't checked this, so some cross-browser tweaking might be necessary
var lat,
    lng,
    form;
lat = document.createElement('input');
lat.type = 'hidden';
lat.value = latitudeValue;
lng = document.createElement('input');
lng.type = 'hidden';
lng.value = longitudeValue;
form = document.querySelector(formSelector);
form.appendChild(lat);
form.appendChild(lng);

latitudeValue,longitudeValue и formSelector - это переменные, которые вам нужно определить в контексте вашей страницы.Вы также можете использовать другое имя параметра, например name="longitude".


Похоже, вам действительно следует использовать AJAX для изменения содержимого страницы, чтобы вы не выполняли последовательный GETЗапросы.Вместо этого вы могли бы просто поменять основное содержимое страницы в зависимости от того, на каком этапе процесса находится пользователь.Это избавило бы от необходимости выполнять какой-либо разбор URL (что легко сделать неправильно).

0 голосов
/ 26 марта 2012

Более простой вариант - создать файл cookie с использованием Javascript / jQuery и добавить в него значения. Таким образом, вы можете добавить все значения на каждой странице, а затем, наконец, получить нужные данные, просто из файла cookie. Вы не используете сценарии на стороне сервера, но получаете все необходимые значения.

0 голосов
/ 26 марта 2012

Вы можете получить доступ к данным в Javascript. Поэтому просто передайте ваши данные на следующую страницу, чтобы получить данные в URL, и проанализируйте их следующим образом с помощью Javascript.

Если ваш URL содержит ?foo=1&bar=2 в конце, вы можете проанализировать foo и bar с помощью

var parts = window.location.search.substr(1).split("&");
var $_GET = {};
for (var i = 0; i < parts.length; i++) {
    var temp = parts[i].split("=");
    $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]);
}

alert($_GET['foo']); // 1
alert($_GET.bar);    // 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...