ajax按键功能不起作用,并且ActionResult参数未接收任何值

时间:2018-07-01 06:05:30

标签: javascript jquery ajax asp.net-mvc asynchronous

我想在ajax keypress事件上更改(计算)文本框的值,但是控制器ActionResult没有收到要计算的任何值(接收null)

 <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调用没有调用controller方法。还有另一件事,如何将两个double值作为参数发送给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 :(得分:2)

是的,您可以添加按键或按键事件。您可以稍微更改代码。

<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);
}
  

弃用注意事项:从jQuery 3.0开始,jqXHR.success(),jqXHR.error()和jqXHR.complete()回调已删除。您可以改用jqXHR.done(),jqXHR.fail()和jqXHR.always()。   有关更多详细信息,请访问官方网站click me

请在评论中告知它是否有效。

答案 1 :(得分:0)

要将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);
    }