Я относительно новичок в HTML (и в программировании в целом), и я пытаюсь объявить переменную и присвоить ей значение при переходе на страницу. У меня есть строка кода, подобная этой:

function() navigate {window.location = "myPage.html?myVar=1";}

Когда я запускаю функцию, загружается новая страница, но всякий раз, когда я пытаюсь получить доступ к переменной, я получаю сообщение об ошибке, в котором говорится, что переменная не определена. Однако, если я определю переменную на новой странице, например, <script>var myVar;</script>, значение будет равно нулю, а не тому значению, которое я пытаюсь установить в функции навигации, которую я использовал ранее.

Я не могу придумать никакого решения этой проблемы, и моя ошибка, вероятно, связана с моими неправильными представлениями о том, как ? в конце URL-адреса работает, но я не могу найти хорошее объяснение того, как это работает где-либо.

2
HashFail 3 Фев 2013 в 01:00

2 ответа

Лучший ответ

Переменные строки запроса предназначены для передачи данных на сервер, когда мы запрашиваем страницу, однако вы все равно можете получить к ним доступ с помощью javascript, ознакомьтесь с этим вопросом Stackoverflow Как получить значения строки запроса в JavaScript?

0
Community 23 Май 2017 в 10:30

Строка запроса - на стороне клиента и на стороне сервера

строка запроса не обрабатывается автоматически в переменные Javascript, который является языком сценариев на стороне клиента. Обычно это делается на языке сценариев на стороне сервера, таких как PHP.

Например, на стороне сервера в PHP вы обычно будете иметь значения строки запроса, автоматически назначаемые массиву $_GET или $_GET['myVar'] в этом случае. Но в Javascript это не так, и вам нужно будет обработать строку запроса самостоятельно.

Идентификатор фрагмента - передача значений URL в Javascript

В Javascript наиболее распространенный способ передачи значений через URL-адрес - это идентификатор фрагмента и < em> не через строку запроса.

Например, вы можете передать две переменные следующим образом:

myPage.html#myVar=1&myOtherVar=2

В JavaScript переменной location.hash будет автоматически присвоено значение #myVar=1&myOtherVar=2, которое можно обработать следующим образом:

var location_vars = [];
var location_vars_temp = location.hash.replace('#',''); // Remove the hash sign
location_vars_temp     = location_vars_temp.split('&'); // Break down to key-value pairs
for (i=0; i < location_vars_temp.length; i++) {
    location_var_key_val = location_vars_temp[i].split('='); // Break down each pair
    location_vars[location_var_key_val[0]] = location_var_key_val[1];
}

В этот момент location_vars будет массивом, заполненным переданными значениями, и вы сможете ссылаться на них с помощью location_vars['myVar'] и location_vars['myOtherVar']

0
Boaz - Reinstate Monica 2 Фев 2013 в 21:47