Как отправить переменную из js в php?

Ссылка скопирована
1 ответ

Не могу отправить значение переменной методом пост через 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 использовать! Но судя по коду скорее всего лендос какой-то...

Также, как и загуглить.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Для отправки переменной из 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}));

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;

$data = json_decode(file_get_contents("php://input"), true); $variable = $data['data']; echo "Received: " . $variable;

Таким образом, переменная `variable` будет отправлена из JavaScript в PHP и выведена на сервере. Важно помнить о безопасности и валидации данных, чтобы избежать уязвимостей и атак на ваше приложение.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно