Стоимость сборки
Доброго времени суток!
Необходимо: Добавить возможность для покупателя рассчитать и оплатить стоимость сборки приобретаемой мебели. Т.е. при оформлении заказа покупатель перед выбором доставки имеет возможность поставить галочку в пункте "Сборка мебели". Стоимость сборки рассчитывается на основании суммарной стоимости выбранных покупателем позиций - это 5% от суммы заказа (без учета доставки) с округлением вверх до 10 руб (минимальная цена сборки 300руб) В корзине выведен чекбокс (файл "test.php") <div data-property-id-row="22" class="clearfix"> <label> <div class="bx_logotype"> <span style="background-image:url(/images/logo-default-d.gif);"></span> </div> </label> <div class="bx_block r1x3 pt8"> <input type="checkbox" id="sbor" onchange="fun1()"> <div class="bx_description"> <?=GetMessage("COST_OF_ASSEMBLY_SUMM")?><span style="font-weight: bold;"> 300</span> </div> </div> </div> Происходит проверка чекбокса (выбран/не выбран) <script type="text/javascript"> function fun1() { var chbox; chbox=document.getElementById('sbor'); if (chbox.checked) { //alert('Выбран'); var message; message = '1'; alert(message); } else { //alert ('Не выбран'); var message; message = '0'; alert(message); } } </script> Подскажите, пожалуйста, каким образом возможно записать значение (выбран/ не выбран, т.е. 1/0) в переменную php и далее данную переменную предавать в другой файл (summary.php)? Спасибо. |
Цитата:
|
laimas, спасибо что откликнулись.
Возможно ли показать как на данном примере будет выглядеть? Или примеры на что отталкиваться? Спасибо. |
_marisha,
можно и примеры, скажите только как именно нужно? Ведь если речь идет о переменной хранящейся на сервере, то только передача ее на сервер, клиент тут не помощник. Собственно передать значение некоего поля формы с одной страницы в форму на другой странице можно и через саму форму. |
laimas, как именно нужно, затрудняюсь ответить.
Пробую делать так (найден пример): function fun1() { var chbox; chbox=document.getElementById('sbor'); if (chbox.checked) { var sbor = '1'; $(document).ready(function(){ $.ajax({ url: "summary.php", type : "POST", data : {sbor:sbor}, }); } else { //alert ('Не выбран'); var message; message = '0'; alert(message); } } В summary.php echo $_POST['sbor']; пусто Возможно данный вариант не подходит для решения в данном случае... |
Ошибка в коде - строку 6 удалите (не закрыто тело условия, да и $(document).ready(function() тут совсем ни к чему).
|
laimas,
function fun1() { var chbox; chbox=document.getElementById('sbor'); if (chbox.checked) { var sbor = '1'; $.ajax({ url: "summary.php", type : "POST", data : {sbor:sbor}, }); } else { var message; message = '0'; alert(message); } } В summary.php echo $_POST['sbor']; пусто |
Если сделать так:
function fun1() { var chbox; chbox=document.getElementById('sbor'); if (chbox.checked) { var sbor = '1'; $.ajax({ url: "summary.php", type : "POST", data : {sbor:sbor}, success: function (data) { alert (data); }, error: function(){ alert ("No PHP script: "); } }); } else { var message; message = '0'; alert(message); } } То при отмеченном чекбоксе возвращает "No PHP script: " |
Запрос будет, а ошибку (ответ сервера: статус) нужно анализировать.
|
laimas,
$.ajax({ url: "/sale.order.ajax/.default/summary.php", data : {sbor:sbor}, type : "POST", success: function (data) { alert ("data"); }, error: function(){ alert ("No PHP script: "); } }); Извините, не верно был указан путь к файлу. Сейчас срабатывает первое условие alert ("data"); Но если сделать alert (data);, то data пустое значение, т.е. в alert пусто... |
Цитата:
|
Цитата:
|
Цитата:
|
Вложений: 1
Nexus,
При отмеченном чекбоксе строка summary.php (скрин "XHR") |
_marisha, нажмите на "summary.php", появится подробная информация о запросе.
Вам нужна будет вкладка "Response" или "Preview", если сервер json возвращает. |
Вложений: 2
Nexus,
На вкладке "Response" пусто, "Preview" тоже пусто |
_marisha, значит сервер ничего не возвращает.
В этом случае серверу положено возвращать 204 код, не 200. |
_marisha,
вопрос гласит "получить на сервере, чтобы передать на другую страницу". Ajax, это асинхронный запрос, то есть есть основания задержаться на данной странице, но определив выбор, и только потом перейти на другую страницу? |
Вложений: 1
laimas, возможно вопрос мной сформирован не верно.
Оформление заказа происходит в компоненте "sale.order.ajax". В данном компоненте есть файлы: "delivery.php" - отвечает за выбор доставки, "paysystem.php" - отвечает за выбор платежной системы, "summary.php" - где производится расчет суммы заказа (вместе с доставкой, со скидками и тп). Все эти файлы подключаются в "template.php". В "template.php" произведено подключение "test.php", в котором выведен чекбокс и происходит проверка на заполненность чекбокса. Далее, если чекбокс выделен, то необходимо информацию о чекбоксе передать в "summary.php" (т.е. проверить, если чекбокс выделен, то отобразить при оформлении заказа надпись "Сборка" и рядом вывести сумму сборки (скрин "Сборка")) |
_marisha,
это объясняет диспозицию, но не то как должно работать. Можно отдать клиенту форму, где он что-то рассчитывает, затем отправляет ее на delivery.php, выбирает доставку, отправляет на paysystem.php, выбирает оплату и т.д. То есть никаких Ajax и каждый раз запрос новой страницы, а все выбранное пользователем на каждой странице хранится на сервере (последовательное заполнение формы). А можно выбранное в каждой предыдущей форме добавлять с следующую скрытыми полями и оно будет доступно на финишной странице. А можно никуда не переходить и все решить асинхронными запросами с одной страницы, запрашивая отдельные серверные сценарии. |
laimas, все решить асинхронными запросами с одной страницы.
Подскажите, пожалуйста, каким образом возможно реализовать? Поидее, страница то одна (по крайней мере при выборе "службы доставки", "платежной системы"), т.е. адресная строка остается неизменной http://test.ru/order Просто сам компонент собирает информацию из кучи других файлов. |
Цитата:
Можно только гадать. Допустим, что все эти файлы (сервера) содержат элементы формы, которые определяют наборы для выбора оплаты/доставки и пр. В этом случае по адресу http://test.ru/order можно передавать один и тот же параметр запроса, но с различными значениями, которые определяют какой из файлов серверу нужно подключить, чтобы вернуть на запрос клиента эти поля. Клиент получив этот html код добавляет его в форму. А может это json, на основе которого уже клиент добавит в форму поля. Невозможно конкретно ответить на ваш вопрос основываясь на предположениях, а приводить примеры кода на все случаи утомительно. ) |
Доставка же как-то обрабатывается :) :
$clickHandler = "onClick = \"BX('ID_DELIVERY_ID_".$arDelivery["ID"]."').checked=true;submitForm();\""; ?> <div class="bx_block w100 vertical"> <div class="bx_element"> <input type="radio" id="ID_DELIVERY_ID_<?= $arDelivery["ID"] ?>" name="<?=htmlspecialcharsbx($arDelivery["FIELD_NAME"])?>" value="<?= $arDelivery["ID"] ?>"<?if ($arDelivery["CHECKED"]=="Y") echo " checked";?> onclick="submitForm();" /> <label for="ID_DELIVERY_ID_<?=$arDelivery["ID"]?>" <?=$clickHandler?>> laimas, В любом случае спасибо за помощь :) |
Этот кусок кода ни о чем никому не скажет. Что значит обрабатывается, если вопрос был как передать и передать далее, ... Можно только заметить, что лишнего в коде предостаточно, и почему то не флажок, а радио кнопка, если только это не одна из.
Не известно, что за сервеные файлы и их назначение, и прочие вопросы, что я выше указывал. А значит и помочь вам никто не сможет. |
Часовой пояс GMT +3, время: 11:58. |