|
Как передать значение из JS в переменную PHP
Всем привет! Стоит задача, с которой пока справиться не смог. Есть:
document.getElementById('product-price').innerHTML = rezultatRadio + totalPrice; мне нужно передать значение 'product-price' из document.getElementById('product-price').innerHTML в php-переменную, типа $product_price Выводить на этой же странице результат получается вот так: <output id="product-price"></output> И нужно значение id='product-price' передать новой переменной $product_price функцией mail(), которая находится на этой же странице order.php... Заранее благодарен! |
Опшен ваш является элементом списка, а список элементом формы. При отправке формы получайте, присваивайте, отправляйте почтой, какие проблемы?
|
Цитата:
|
На сервере не будет никакой js-переменной. Если речь идет о форме, то в зависимости от метода ее передачи ее данные будут на сервере в массиве $_GET или $_POST, можно их получить и из массива $_REQUEST. А чтобы элемент формы передавался на сервер, у него должен быть атрибут name, который будет ключом в вышеуказанных массивах.
|
Цитата:
laimas, у меня и форма оформления заказа, и код отправки на почту находится на одной странице. В письме общая сумма заказа отправлялась таким образом: $tprice = substr(htmlspecialchars(trim(number_format($product['price'] * $quantity ,2))), 0, 1000000); $message .= 'Общая сумма: ' . $tprice . '<br />'; Но после добавления функции выбора типа доставки появился этот код: <input type="radio" name="nameRadio" value="300" > Наш курьер (Стоимость доставки 300 руб) <input type="radio" name="nameRadio" value="0">Самовывоз <p class="total" align="center">Общая сумма заказа: <span class="product-price"><output id="product-price"></output> руб</span></p> Вот как теперь $tprice поменять на id="product-price", вот в чём вопрос?????? |
substr(htmlspecialchars(trim(number_format($produc t['price'] * $quantity ,2))), 0, 1000000); - вы можете объяснить зачем здесь htmlspecialchars, а trim после number_format, и весь этот бедлам еще и должен быть обработан substr?
Вот как теперь $tprice поменять на id="product-price", вот в чём вопрос?????? Поменять где, на сервере? Никак. Вставить видимо нужно $tprice в id="product-price"? <output id="product-price"><?=$tprice ? $tprice : null?></output> |
Цитата:
|
Тег output не является элементом формы, более того, он доступен только в современных браузерах. А не являясь элементом формы, он как ее значение не передается на сервер. Если вам нужно передать текст из этого тега, помещайте его в скрытое поле формы на клиенте. Но если этот тег содержит produc t['price'] * $quantity, то какой смысл его передавать?
А вот это substr(htmlspecialchars(trim(number_format($produc t['price'] * $quantity ,2))), 0, 1000000); - полнейшая чушь, выбрасывайте это. $produc t['price'] - цену продукта должен знать сервер, передавать ее с клиента не стоит. Клиент должен сообщать серверу только количество выбранного. |
Цитата:
Существует сессия: $_SESSION['total_price'], так я выводил "общую сумму заказа" до появления выбора типа доставки с JS. $total_price = $_SESSION['total_price']; $total_price я заносил в БД "общую сумму заказа" Теперь с помощью JS общая сумма заказа заносится в id="product-price" <script> window.onload = function(){ totalPrice = "<?=$_SESSION['total_price']?>"; } window.onclick = function onclickRadio() { var nameRadio = document.getElementsByName('nameRadio'); for (var i = 0; i < nameRadio.length; i++) { if (nameRadio[i].type === 'radio' && nameRadio[i].checked) { rezultatRadio = nameRadio[i].value; } } document.getElementById('rezultatRadio').innerHTML = rezultatRadio; document.getElementById('product-price').innerHTML = new Number (+rezultatRadio) + new Number (+totalPrice); } </script> И вот как теперь значение данного id можно передать переменной PHP, чтобы можно было это дальше обрабатывать в PHP? |
<script>
var totalPrice = "<?=$_SESSION['total_price']?>"; Хранение данных в сессии никак не оправдывает substr(number_format($produc t['price'] * $quantity ,2), 0, 10), это глупость, ибо в контексте типа данных с которыми вы работаете, этого совсем не требуется, тем более htmlspecialchars и trim. Об остальном тоже хорошо подумайте. Вы изначально поступаете непотребным способом, и ваш код грешит тем, что может огрести кучу мусора, и скушать его. |
Часовой пояс GMT +3, время: 10:35. |
|