Делаю отправку имени с помощью FormData, php скрипт получает нормальное “имя”, проверила с помощью file_put_contents, но когда мне требуется вернуть имя обратно в js, выходит почему-то кракозябры. Как исправить? HTML: <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.js"></script> </head> <body> <form name="person"> <input name="name" value="Имя"> </form> <script> // создать объект для формы var formData = new FormData(document.forms.person); var name = document.forms.person.name.value; // добавить к пересылке ещё пару ключ - значение formData.append("name", "Имя"); // отослать var xhr = new XMLHttpRequest(); xhr.open("POST", "/handler.php"); xhr.onload=function() { console.log(xhr.responseText); //Кракозябры } xhr.send(formData); </script> </body> Код php PHP: <?php $name = $_POST["name"]; file_put_contents("name.txt",$name); echo htmlspecialchars("{\"name\":$name}"); ?>
Проблема решена, нужно было сделать следующее: 1.Установить заголовок и метатег в главном файле. Вот так: HTML: <?php header("Content-Type: text/html; charset=utf-8"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 2. Изменить кодировку на utf-8 в index.php и handler.php. 3. Добавить в handler.php header. PHP: <?php header("Content-Type: text/html; charset=utf-8"); $name = $_POST["name"]; file_put_contents("name.txt",$name); echo htmlspecialchars("{\"name\":\"{$name}\"}", ENT_NOQUOTES,"UTF-8"); ?> После этих действий заработало.