Задать вопрос
mk3mk
@mk3mk
занимаюсь вёрсткой (иногда)

Возможно ли передать данные из одного файла в другой файл через JavaScript?

Всем привет!
Есть index.html
В нем есть форма с инпутом и кнопкой submit
<form action="/search.html" id="searchForm">
В input пишется слово.
Мы его сохраняем в переменную.
var msg = document.getElementById("my-input").value;

По сабмиту открывается файл search.html.
Можно ли как-то передать значение переменной msg из index.html в search.html ?
Чтобы уже в том файле использовать переменную msg ?
  • Вопрос задан
  • 2770 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@2bllk
Я не буду спрашивать, зачем вам это. Просто расскажу, как я придумал это сделать.
Файл "a.html":
<html>
<head>
	<title>Document</title>
</head>
<body>
	<form action="b.html" method="GET">
		<input type="text" name="variable1">
		<input type="text" name="variable2">
		<input type="submit">
	</form>
</body>
</html>

В форме указываем, что будет использоваться метод GET (почитайте в интернетах, если не знаете, что это такое и как это работает). Методом GET значения передаются прямиком в ссылке (ссылка вида "example.com?var1=Hello&var2=World", где жирным выделено название переменной, а курсивом — ее значение). НО! GET имеет ограничение в длине передаваемых данных (об этом тоже почитайте в интернетах), имейте это в виду.
У элементов input есть параметр name. Он содержит имя переменной, отправляемой в GET запросе, а ее значение автоматически берется из того, что вы ввели в input.
Так-с, при отправке формы у нас откроется страница b.html
<html>
<head>
	<title>Document</title>
</head>
<body>
	<script type="text/javascript">
		function getGETParameters(paramStr){
			return Object.fromEntries(paramStr.split('&').map(e => decodeURI(e).split('=')));
		}
		console.log(getGETParameters(window.location.search.substr(1)));
	</script>
</body>
</html>

Когда она откроется, посмотрите на строку поиска/адреса, там вы увидите, как примерно выглядит GET-запрос. Потом загляните в консоль и увидите, что там отображается массив (или объект). Я думаю, вы поймете, для чего он нужен.

Немного изменим файл b.html
<html>
<head>
  <title>Document</title>
</head>
<body>
  <script type="text/javascript">
    function getGETParameters(paramStr){
      return Object.fromEntries(paramStr.split('&').map(e => decodeURI(e).split('=')));
    }
    let variables = getGETParameters(window.location.search.substr(1));
    console.log(variables["variable1"]); // эта строка выведет в консоль то, что Вы вводили в первый input
  </script>
</body>
</html>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
для js используй куки или сессию, но думаю лучше бы переменную передавать с помощью php методом post
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Передать напрямую нельзя, но можно сохранить ее значение где-нибудь, а затем уже в том файле вытащить сохраненное и вставить в нужное вам поле.

Если обе ваши формы находятся на одном и том же сайте, то для сохранения данных, можно использовать локальное хранилище.

Пример использования:
localStorage.setItem("test", "тестовая строка");
Мы сохранили тестовую строку в локальное хранилище.

Доступ к сохраненной информации можно будет получить позже по ключу test:
per = localStorage.getItem("test");
alert(per);

Данные в хранилище хранятся условно вечно и не исчезают даже если закрыть сайт. Грубо говоря, можно туда что-нибудь записать, а через год зайти на этот же сайт и считать информацию.

Подробнее про локальное хранилище и особенности его использования вы можете почитать в сети. Яндекс вам поможет найти мануалы, их полно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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