Задать вопрос
@IceDoG7538

Почему не обновляется переменная в php?

В калькуляторе подсчитывается цена, но при передаче value скрытого inputa он передает начальное значение
<form enctype="multipart/form-data" method="post" id="form" onsubmit="send(event, '<?php echo get_template_directory_uri() ?>/send.php')">
....
<span class='price'>0 </span><span class='price__symbol'>₽</span>
<input type="hidden" name="i_price" value='' id='prices'> 
</form>

Вот php отправитель
$telephone = $_POST['telephone'];
$price = $_POST['i_price'];

// Формирование самого письма
$title = "Заголовок письма";
$body = "<h2>Новое письмо</h2>
<b>Номер:</b> $telephone<br>
<b>Cтоимость:</b> $price<br>";

Вот отправка запроса на сервер
function send(event, php) {
  console.log("Отправка запроса");
  event.preventDefault ? event.preventDefault() : event.returnValue = false;
  var req = new XMLHttpRequest();
  req.open('POST', php, true);
  req.onload = function () {
    if (req.status >= 200 && req.status < 400) {
      json = JSON.parse(this.response);
      // ЗДЕСЬ УКАЗЫВАЕМ ДЕЙСТВИЯ В СЛУЧАЕ УСПЕХА ИЛИ НЕУДАЧИ
      if (json.result == "success") {
        // Если сообщение отправлено
        alert("Сообщение отправлено");
      } else {
        // Если произошла ошибка
        alert("Ошибка. Сообщение не отправлено");
      }
      // Если не удалось связаться с php файлом
    } else { alert("Ошибка сервера. Номер: " + req.status); }
  };

  // Если не удалось отправить запрос. Стоит блок на хостинге
  req.onerror = function () { alert("Ошибка отправки запроса"); };
  req.send(new FormData(event.target));
}
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
tregor
@tregor
Senior PHP Backend developer
У тебя ID "#prices" точно один на всю страницу? ID должен быть уникальным у каждого элемента, class может быть одинаковым. Если ID не уникален, то видимо JS ломается и не находит элемент и поэтому отправляет дефолтные данные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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