Функция нажатия клавиш ajax не работает, а параметр ActionResult не получает никакого значения - PullRequest
0 голосов
/ 01 июля 2018

Я хочу изменить (вычислить) значение текстовых полей для события нажатия клавиши ajax, но контроллер ActionResult не получает никакого значения для вычисления (получает ноль)

 <script>
    $('#TotDiscnt').keypress(function () {           
        //var data = $('#totDiscnt').val();
        $.ajax({
            type: 'Post',
            url: '/Whatever/Discount',
            data: $('#totDiscnt').val(),
            success: function (response) {
                $('#TotPurAmt').val(response);
            }
        });
    });
</script>

На контроллере

public ActionResult Discount(string text)
    {

       // calculation

        return Json(sum, JsonRequestBehavior.AllowGet);

Я пробовал как

данные: {текст: request.term},

пока я делаю, что вызов ajax не вызывает метод контроллера. И еще одна вещь, как я могу отправить два двойных значения в качестве параметра методу ActionResult, сформировать вызов ajax как

 <script>
$('#TotDiscnt').keypress(function () {           
    //var data = $('#totDiscnt').val();
    $.ajax({
        type: 'Post',
        url: '/Whatever/Discount',
        data: {num1:$('#totDiscnt').val(),
                     num2:$('#Discnt').val() },
        success: function (response) {
            $('#TotPurAmt').val(response);
        }
    });
});

а затем получить в качестве двойного значения в параметре типа

 public ActionResult Discount(double num1, double num2)
    {
        //calculation

        return Json(sum, JsonRequestBehavior.AllowGet);

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Чтобы отправить несколько значений из вызова ajax в параметр ActionResults: Скрипт:

 <script>
    $(document).ready(function () {
        $('#btnCalculate').click(function () {
            $.ajax({
                type: 'Post',
                url: '/Sales/Calculate',
                data: { num1: $('#txtNum1').val(), num2: $('#txtNum2').val(),//so on.... },
                success: function (response) {
                    $('#txtSum').val(response)
                }
            });
        });
    });
</script>

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

 public ActionResult Calculate(int num1, int num2)
    {
        int sum = 0;
        sum = num1 + num2;
        return Json(sum, JsonRequestBehavior.AllowGet);
    }
0 голосов
/ 01 июля 2018

Да, вы можете добавить событие либо keyup, либо нажатие клавиши. Вы можете немного изменить свой код.

<script>
$('#TotDiscnt').keypress(function () {           
    //var data = $('#totDiscnt').val();
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=UTF-8',  //send type of data to sever
        dataType: 'json', //retrun type of data from server
        url: '/Whatever/Discount',
        data: JSON.stringify(text:$(this).val()),

       // data: $('#totDiscnt').val(),
        success: function (response) {
            $('#TotPurAmt').val(response);
        }
    });
});

Здесь ваш контроллер должен быть как.

public ActionResult Discount(string text)
{

   // calculation

    return Json(sum, JsonRequestBehavior.AllowGet);
}

Примечание об устаревании: обратные вызовы jqXHR.success (), jqXHR.error () и jqXHR.complete () удалены с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always (). Для более подробной информации, пожалуйста, посетите официальный сайт нажмите меня

Пожалуйста, дайте знать в комментарии это работает или нет.

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