@Qumbeez

Как передать переменную JavaScript в PHP?

Привет всем. Как передать переменную JavaScript которая принимает какое-то значение при клике на кнопку открытия модального окна с заказом. Я пытался сделать через value инпута, но ничего не получилось. Пытаюсь сделать через обработчик формы JavaScript, но тоже ничего не получается.
Вот код обработчика:
$(".actions").click(function() {
    $("#order").bind("submit", function(e) {
        $.ajax({
            type: "POST",
            url: "/wp-content/themes/bonasfide/assets/js/form/order.php",
            data: $(this).serialize(),
        }).done(function() {
            alert("Спасибо за заказ! Мы скоро с вами свяжемся.");
            $("#order").trigger("reset");
            $.fn.custombox('close');
        });
        return false;
    });
});

Вот код PHP
// Получаем данные из формы
$telephone = trim($_POST["telephone"]);
$productName = trim($_POST["productName"]);

// Данные для писем
$recepient = "qumbeez@ya.ru";
$sitename = "BONASFIDE";
$body = "
<h3>Новый заказ на сайте</h3>
Телефон: $telephone<br>
Продукт: $productname";
$title = "Новый заказ с сайта \"$sitename\"";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: $recepient <info@bonasfide.ru>\r\n";

// Отправка писем
mail($recepient, $title, $body, $headers);

Подскажите, как лучше передать эту переменную и как её вообще передать. У меня в письмах пустое поле приходит.

<script>
                        document.getElementsByName('productName').value = productName;
                    </script>
                    <form id="order" name="order" class="main-contact-form row">
						<div class="form-group col-md-12">
							<input name="telephone" type="text" class="control" required="required" placeholder="Ваш номер телефона">
                            <input style="display: none" type="text" name="productName">
						</div>              
						<div class="form-group form-submit tcol-md-12">
							<button type="submit" name="submit" class="btn-submit">Сделать заказ!</button>
						</div>
					</form>


<a href="#quickorder" class="quickview" onclick="productName = '<?php the_title(); ?>';">
																			<button class="button btn-cart order-btn" title="Быстрый заказ в один клик" type="button">
					                                                			<span>Сделать заказ</span>
					                                            			</button>
					                                            		</a>

Код в котором я задаю productName при клике.
  • Вопрос задан
  • 532 просмотра
Решения вопроса 1
pashted
@pashted
тыжпрограммист
у вас опечатка в названии переменной productname в пхп-части. потому она и не видна в письме. надо одинаково написать с учетом регистра в обоих местах (в начале у вас productName, ниже productname)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
type: "POST" -> method: "POST"
api.jquery.com/jquery.ajax
Ответ написан
Комментировать
ak-o
@ak-o
web-developer
надо типа того:
$('#formid').bind("submit", function() {
$.ajax({
            method: "POST",
            url: "/wp-content/themes/bonasfide/assets/js/form/order.php",
            data: $(this).serialize(),
        }).done(function() {
            alert("Спасибо за заказ! Мы скоро с вами свяжемся.");
            $("#order").trigger("reset");
            $.fn.custombox('close');
        });
return false;
});

<form id="formid">
<input type="text" name="telephone" value=""/>
<input type="submit" value="send"/>
</form>


Тогда в пхп увидишь $_POST["telephone"].

А сейчас ты по клику на .actions навешиваешь каждый раз событие submit, в котором this если не ошибаюсь это тот объект, который вызвал функцию click. и это не форма, что бы serialize() сделать. смотри хоть через firebug что на сервер отправляется и проверяй\думай что не так делаешь. в консоль выводи и т.д
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы