Как отправить переменную из js в php?
Не могу отправить значение переменной методом пост через XMLHttpRequest
Помогите исправить. Суть такая я кликаю на картинку и мне показывается как она выглядит и если понравилось я кликаю сохранить и она сохраняется в бд. Просмотр готов. Но src в форму не могу отправить и следовательно не могу сохранить src картинки
код js
/* клик по картинке*/ let btns = document.querySelectorAll('.img-item'); btns.forEach((btn) => { btn.addEventListener('click', () => { getParentId(btn); }); }); /*передача src предпоказу*/ function getParentId(el) { const src = el.src; document.querySelector('.preview-fon').src=src; /*отправка src php обработчику формы*/ xhr = new XMLHttpRequest(); xhr.open("POST", "../sourse/edit-fon.php"); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send("item=" + src); }; |
/* клик по картинке*/ let btns = document.querySelectorAll('.img-item'); btns.forEach((btn) => { btn.addEventListener('click', () => { getParentId(btn); }); }); /*передача src предпоказу*/ function getParentId(el) { const src = el.src; document.querySelector('.preview-fon').src=src; /*отправка src php обработчику формы*/ xhr = new XMLHttpRequest(); xhr.open("POST", "../sourse/edit-fon.php"); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.send("item=" + src); };
обработчик формы php
<?php session_start(); // подключение к bd require_once 'connect.php'; require_once '../inc/function.php'; $fon = $_POST['item']; mysqli_query($connect, "UPDATE `Users` SET `fon` = '$fon' WHERE `login` = '$login'"); ?> <script src="../js/edit-fon.js"></script> |
<?php session_start(); // подключение к bd require_once 'connect.php'; require_once '../inc/function.php'; $fon = $_POST['item']; mysqli_query($connect, "UPDATE `Users` SET `fon` = '$fon' WHERE `login` = '$login'"); ?> <script src="../js/edit-fon.js"></script>
сама форма
<form action="../inc/edit-fon.php" class="form-fon-load" method="post" enctype="multipart/form-data" name="fon"> <div class="fon-view"> <h1>Фон профиля</h1> <div class="windowfon"> <div class="preview-profile"> <img class="preview-profileimg" src="../img/nav/preview-profile.png" alt=""> </div> <img class="preview-fon" src="<?= $fonprofile ?>" alt=""> </div> </div> <div class="fon-btm"> <?foreach ($fon as $fon): ?> <div class="item"> <img id="<?= $fon['id-item'] ?>" class="img-item" src="<?=$fon['img-item']?>" alt=""> <a class="name-item"><?=$fon['name-item']?></a> </div> <?endforeach?> </div> <div class="btm-es"> <div class="btm-cancel"><a href="../sourse/profile.php">отмена</a></div> <button class="btm-save" type="submite">сохранить</button> </div> </form> |
<form action="../inc/edit-fon.php" class="form-fon-load" method="post" enctype="multipart/form-data" name="fon"> <div class="fon-view"> <h1>Фон профиля</h1> <div class="windowfon"> <div class="preview-profile"> <img class="preview-profileimg" src="../img/nav/preview-profile.png" alt=""> </div> <img class="preview-fon" src="<?= $fonprofile ?>" alt=""> </div> </div> <div class="fon-btm"> <?foreach ($fon as $fon): ?> <div class="item"> <img id="<?= $fon['id-item'] ?>" class="img-item" src="<?=$fon['img-item']?>" alt=""> <a class="name-item"><?=$fon['name-item']?></a> </div> <?endforeach?> </div> <div class="btm-es"> <div class="btm-cancel"><a href="../sourse/profile.php">отмена</a></div> <button class="btm-save" type="submite">сохранить</button> </div> </form>
Дополнительно:
https://yandex.ru/search/?text=XMLHttpRequest+отпр...
Ответы:
Как минимум у тебя в последней кнопке type="submite" вместо submit. Дальше не смотрел. Проверь имена классов и id
UPDATE `Users` SET `fon` = '".mysqli_real_escape_string($connect, $fon)."' WHERE `login` = '".mysqli_real_escape_string($connect, $login)."
Ребята добавляйте, а то вашу базу вскроют за 5 минут
- Я об этом подумал в первую очередь! Вот тебе и уровень джунов который мы заслужили...
А вообще хорошо бы PDO использовать! Но судя по коду скорее всего лендос какой-то...
Также, как и загуглить.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для отправки переменной из JavaScript в PHP можно использовать различные методы, в зависимости от требований проекта и уровня безопасности необходимого взаимодействия между клиентской и серверной частями приложения.
Один из самых распространенных способов - это использование AJAX запросов. Для этого можно создать XMLHttpRequest объект в JavaScript и отправить данные на серверный скрипт, который будет обрабатывать полученные данные и возвращать результат.
Пример такого запроса может выглядеть следующим образом:
let variable = "Hello, World!"; let xhr = new XMLHttpRequest(); xhr.open("POST", "server.php", true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function() { if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { console.log(xhr.responseText); } }; xhr.send(JSON.stringify({data: variable}));
На сервере можно обработать этот запрос, например, с помощью PHP скрипта:
$data = json_decode(file_get_contents("php://input"), true); $variable = $data['data']; echo "Received: " . $variable;
Таким образом, переменная `variable` будет отправлена из JavaScript в PHP и выведена на сервере. Важно помнить о безопасности и валидации данных, чтобы избежать уязвимостей и атак на ваше приложение.