Динамическая форма заказа с Javascript - считывать код бонуса? - PullRequest
0 голосов
/ 19 октября 2011

Я делаю форму, где вы можете заполнить личную информацию и выбрать продукты. Он динамически корректирует цены с помощью нескольких простых сценариев Java и, в конечном итоге, выводит всю информацию в файл PDF.

Теперь я должен ввести бонусный код. Как и в случае с «BONUS2011», вы получаете 20% на все выбранные продукты. Это по динамике. Как и в тот момент, когда вы правильно заполните поле бонуса, вы получите 20% от цены.

Теперь у меня вопрос, какой самый простой и простой способ сделать это? Я мог бы просто сохранить бонусный код в .js, но это, конечно, не идеальное решение. Мои знания в Javascript и PHP очень ограничены (как вы могли заметить).

Заранее спасибо!

1 Ответ

0 голосов
/ 19 октября 2011

Поскольку у вас нет фрагмента кода, я собираюсь сделать очень грубый пример того, что вы можете сделать. Просто убедитесь, что информация, которую вы используете для взимания платы с клиента, правильно рассчитывается после того, как он / она публикует, и что вы не полагаетесь на поле Total в форме, чтобы определить, с чего его взимать (поскольку этим можно манипулировать, когда отправил).

Не не вставьте бонусный код в JavaScript, так как каждый сможет его просмотреть.

Скорее реализуйте AJAX-вызов для обновления поля цены. Есть много примеров там. Также проще, если вы используете библиотеку JavaScript, такую ​​как jQuery (http://www.jquery.com).

С jQuery это действительно просто:

// HTML
<!-- Bonus Code goes here -->
<input type="text" id="bonus_code" />

<!-- Contains the full price for the products -->
<input type="hidden" id="full_price" value="100.00" />

 <!-- Contains the display price for the products -->
<input type="text" id="display_price" readonly value="100.00" /> USD

// JavaScript
$(document).ready(function()
{
    $('#bonus_code').change(function()
    {
        $.get('calculate_price.php',
            {
                bonus_code: $(this).val(),
                full_price: $('#full_price').val()
            },
            function(result)
            {
                $('#display_price').val(result);
            }
        );
    });
});

// calculate_price.php
<?php
$bonus_code = $_GET['bonus_code'];
$full_price = (float)$_GET['full_price'];
if ($bonus_code == 'BONUS2001')
{
    echo $full_price / 100 * 80; // output the new price
}
else
{
    echo $full_price;
}
?>
...