【问题标题】:Ajax jquery sending Null value to Mvc4 controllerAjax jquery 向 Mvc4 控制器发送 Null 值
【发布时间】:2014-03-28 06:50:01
【问题描述】:

我有一个与堆栈溢出时搜索的 ajax 调用请求相关的问题尝试了我得到的所有相关帮助,但无法解决问题。问题是我使用此代码从我的视图向控制器请求。

<script type="text/javascript">

    $(document).ready(function () {

        $('#contactDiv ').click(function() {

           var  number = $(this).find('.ContactNumber').text();

            var dataJson = {"contactNumber": number};

            $.ajax({
                type: "POST",
                url: "../contactWeb/messages",
               data: JSON.stringify(dataJson),
               //data: dataJson,
                 //contentType: "application/json",
                  contentType: "application/json",
                cache: false,
                success: function (msg) {
                    //msg for success and error.....
                    alert(msg);
                    return true;
                }
            });

        });

    });

</script>

而接收调用的控制器是

      [HttpPost]
        public JsonResult messages(string dataJson) 
        {

            Int64 userID = Convert.ToInt64(Session["userId"]);
            try
            {
                List<MessagesModel> messagesModel = new List<MessagesModel>();
                IMessages MessageObject = new MessagesBLO();

                messagesModel = MessageObject.GetAllMessagesWeb(userID , dataJson);

                //ViewData["Data"] = messagesModel;



            }
            catch (Exception e)
            {

            }

            //return View();

            string msg = "Error while Uploading....";
            return Json(msg, JsonRequestBehavior.AllowGet);
        } 

但它会将 NULL 值传递给控制器​​

【问题讨论】:

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


    【解决方案1】:

    有几个问题需要解决

    需要什么

    JsonRequestBehavior.AllowGet
    

    当您的action 类型为post

    如果您使用asp.net mvc4,请使用Url.Action 指定网址,即

    url:"@Url.Action("ActionName","ControllerName")"
    

    现在谈谈你的问题。

    您的参数名称必须匹配,将dataJson 更改为contactNumber。虽然它可以使用,但您无需使用JSON.stringify,因为您正在传递单个字符串参数。

    [HttpPost]
            public JsonResult messages(string contactNumber) 
            {
    
                Int64 userID = Convert.ToInt64(Session["userId"]);
    

    【讨论】:

    • 是的,但谢谢我现在明白了……“aplication/json”应该在那里,而不仅仅是“json”
    【解决方案2】:

    您好,对于您通过 Ajax 调用传递的对象,您能否将操作中的参数名称 string dataJson 更改为 contactNumber

    [HttpPost]
        public JsonResult messages(string contactNumber) //here
        {
    
            Int64 userID = Convert.ToInt64(Session["userId"]);
            try
            {
                List<MessagesModel> messagesModel = new List<MessagesModel>();
                IMessages MessageObject = new MessagesBLO();
    
                messagesModel = MessageObject.GetAllMessagesWeb(userID , contactNumber); //and here
    
                //ViewData["Data"] = messagesModel;
    
    
    
            }
            catch (Exception e)
            {
    
            }
    
            //return View();
    
            string msg = "Error while Uploading....";
            return Json(msg, JsonRequestBehavior.AllowGet);
        } 
    

    【讨论】:

    • 是的,但谢谢我现在明白了......“aplication/json”应该在那里,而不仅仅是“json”
    【解决方案3】:

    如果你想在 messages() 中获取 JSON,试试这个:

    <script type="text/javascript">
    
        $(document).ready(function () {
    
            $('#contactDiv ').click(function() {
    
               var  number = $(this).find('.ContactNumber').text();
    
                var data = {"contactNumber": number};
                var dataJson = JSON.stringify(data);
                $.ajax({
                    type: "POST",
                    url: "../contactWeb/messages",
                   dataType: 'text',
                   data: "dataJson=" + dataJson,
                   //data: dataJson,
                     //contentType: "application/json",
                    cache: false,
                    success: function (msg) {
                        //msg for success and error.....
                        alert(msg);
                        return true;
                    }
                });
    
            });
    
        });
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多