Использование jjuery's Ajax для мгновенного вычисления представления в mvc2 - PullRequest
0 голосов
/ 09 августа 2011

У меня есть общая страница продукта, которая показывает общее количество продуктов, добавленных в корзину. Я хочу добавить текстовое поле для промо, где пользователи могут добавить промо-код для получения определенных скидок, промо-кодсохраняются в базе данных с учётной ставкойТаким образом, если клиент вводит код и нажимает кнопку промо, система должна проверить действительный промо-код, а затем выполнить начальный расчет, вычтя общую цену со ставкой дисконтирования.Если это можно сделать с помощью jQuery Ajax или есть какое-либо другое возможное решение, любая помощь или учебное пособие будут высоко оценены.Приветствия

<script language="javascript" type="text/javascript">

        $(document).ready(function () {
            $("#promo").change(function () {
                var $this = $(this);
                var number = $('promoNumber').val();
                $.ajax({
                    url: '/Booking/Review',
                    type: "POST",
                    data: {number:textbox},
                    success: function (data) {
                                  if (data["success"]) {
                                  alert(data)
                                  }
                    }
                });
            });
        });
    </script>

    <%using (Html.BeginForm())
{ %>
        <table>
            <tr>
                <td> <input type="button" id="promo" value="Promo" /> </td>
                <td> <%: Html.TextBox("promoNumber") </td>
                </tr>
                <tr><td>
                  <div class="totalCost">
                   <label><b>Total Amount:</b></label> <%: String.Format("{0:c}", ViewBag.TotalAmount)%> <br /></div>
                 </td></tr>

                 </table> }%>

Контроллер

    [HttpPost]
    public ActionResult Review(int number)//this parameter is my selected checkbox value.I have to get this value from ajax
    {
        IVoucherRepository voucherResp = new VoucherRepository();
        IQueryable<Voucher> getVoucher = voucherResp.GetVouchers(number);
         //first check if the code is there or not else return error
         int discount = 0;
         foreach (var number in getVoucher) 
         {
         discount = number.discount;//Thats the discount number
         }
       //after getting the discount code i need to pass that to ViewBag.TotalAmount to do calculation
         ViewData["Data"] = "success";
        return View();
    }

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Я видел проблему, когда вы отправляете свои данные на контроллер:

var number = $('promoNumber').val();

и затем:

data: {number:textbox},

Что такое текстовое поле?
Вы должны ссылаться на ваш promoNumber , как это в jQuery:

var number = $('#promoNumber').val();

Вот что я бы сделал:

$(document).ready(function() {
    $("#promo").click(function() {
        $.ajax({
            type: 'POST',
            url: 'Booking/Review',
            dataType: 'json',
            data: { number: $("#promoNumber").val() },
            success: function(data) {
                if (data) {
                    alert(data.discount);
                    alert(data.totalAmount);
                }
            }
        });
    });
});

Поскольку вы используете кнопку, я бы использовал событие щелчка.
Я использую jSon в качестве возвращаемого объекта.

и это контроллер:

[HttpPost]
public ActionResult Review(int number)
    {
    IVoucherRepository voucherResp = new VoucherRepository();
    IQueryable<Voucher> getVoucher = voucherResp.GetVouchers(number);
    //first check if the code is there or not else return error
    int discount = 0;
    int totalAmount = 0;
    foreach (var number in getVoucher) 
        {   
        discount = number.discount;//Thats the discount number
        }
    //after getting the discount code i need to pass that to ViewBag.TotalAmount to do   calculation

    return (Json(new { discount = discount, totalAmount = totalAmount }, JsonRequestBehavior.DenyGet));

    }

в вашем контроллере вы можете выполнить все вычисления и затем вернуть объект json со всеми необходимыми свойствами.

0 голосов
/ 09 августа 2011

Присоедините событие публикации jQuery к кнопке купона:

$('input[name="coupon"]').click(function() {
    $.ajax({
        type: 'POST',
        url: myUrl,
        data: {code: $('input[name="code"]').val()},
        success: function(discount) {
            /* logic here.  may need to store the code and it's discount 
               if more than one code is allowed */
        }
    });
});

Как упомянуто ghayes, хотя, если есть существующие решения, используйте их. Скорее всего, они рассмотрели многие неизвестные вам ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...