Как заменить кодировку при переходе с одной страницы на другую Js

152
30 апреля 2019, 02:10

У меня есть 2 страницы с названиями first.html и second.html, а также скрипты к ним fi.js и se.js. Мне надо передать данные, введённые пользователем на странице first.html, на страницу second.html, желательно без перехода пользователя на second.html. Но когда в форме вводятся русские символы, то на второй странице они читаются в неправильной кодировке. Как это исправить?

first.html

<!DOCTYPE html>
<html lang="ru">    
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Fill</title>
</head>
<body>
<div class="container">
  <form>
     <table>
      <tr>
        <td>От кого</td>
        <td>
          <input name="from" type="text" id="fromWHO" placeholder="Ваше имя">
        </td>
      </tr>
      <tr>
        <td>Ваш телефон</td>
        <td>
          <input name="telephon" id="telephonWHO" type="text" placeholder="Ваш телефон">
        </td>
      </tr>
    <input type ="button" value="Отправить сообщение" onclick="goMail();" />
  </form>
</div>
</div>
</div>
<script src="fi.js"></script>
</body>
</html>

second.html

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="se.js"></script>
</head>
<body onload="OnLoad()">
  <font id="UsName">
  </font><br>
  <font id="telephonWHO">
  </font>
</body>
</html>

fi.js

function goMail() {
  if (confirm("Уверены...")) {
                var UsName = document.getElementById('fromWHO').value;
                var Tel = document.getElementById('telephonWHO').value;
                document.location = "second.html?id=" + UsName + '&telephonWHO=' + Tel;
            }
   }

se.js

function OnLoad() {
            var query = window.location.href.split("?")[1];
            var params = query.split("&");
            document.getElementById("UsName").innerHTML = params[0].split("=")[1];
            document.getElementById("telephonWHO").innerHTML = params[1].split("=")[1].split("#")[0];
   }
Answer 1

Вы можете использовать encodeURIComponent и decodeURIComponent:

В первом кодируете UsName:

//...
document.location = "second.html?id=" + encodeURIComponent(UsName) + '&telephonWHO=' + Tel;
//...

Во втором декодируете:

//...
document.getElementById("UsName").innerHTML = decodeURIComponent(params[1].split("=")[1].split("#")[0]);
//...
READ ALSO
Запрос для SQL. Как реализовать?

Запрос для SQL. Как реализовать?

Для задачи необходимо 2 таблицы:

140
Асинхронное добавление записей в MySQL

Асинхронное добавление записей в MySQL

Имеется парсер, который написан на lxml + asyncio + aiohttp, который добавляет записи в MySQL

139
Тип TEXT вместо VARCHAR(N). Быстродействие и компактность

Тип TEXT вместо VARCHAR(N). Быстродействие и компактность

Есть таблица товаров с множеством полейДля текстовых данных (название, автор, ссылка на картинку и т

150
Как сложить выборки в MySQL при условии

Как сложить выборки в MySQL при условии

Как изменить код, чтобы выборки складывались при "tb_zgrading_21Уровень знаний > 0" и "tb_zgrading_21

141