ASP.NET MVC Controller接收ajax post方式发送过来的json对象或数组数据

本文介绍了一种通过AJAX向服务器POST JSON数组的方法。前端使用jQuery发起请求,并通过JSON.stringify将对象数组序列化为字符串。服务器端利用System.Web.Script.Serialization命名空间中的JavaScriptSerializer进行反序列化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本例旨在说明我的一种Controller接收ajax提交(POST)过来的json对象或数组信息的方式,感觉应该有更好的方式,欢迎提出宝贵意见。JSON.stringify(jsonObj)不支持IE8以下浏览器  前端页面代码如下:

 

<script type="text/javascript" src="~/Scripts/jquery-1.11.3.js"></script>
 <form id="fm">
     <div>
         <input id="btn" type="button" value="提交" onclick="SaveTest()" />
     </div>
 </form>
 <script>
    function SaveTest() {
         var jsonObj = [];
         jsonObj.push({"id":1,"name":"123"});
         jsonObj.push({"id":2,"name":"234"});
         jsonObj.push({ "id": 3, "name": "345" });
         $.ajax({
             url: "/Test/Save",
            type: "post",
             dataType: "json",
             async:false,
             data: JSON.stringify(jsonObj),
             success: function (data) {
 
             },
             error: function (XMLHttpRequest, textStatus, errorThrown) {
                 alert(XMLHttpRequest.status);
                 alert(XMLHttpRequest.readyState);
                 alert(textStatus);
             }
         });
     }
</script>

 

Controller->Action代码如下(需引用System.IO和System.Web.Script.Serialization命名空间):

 

 [HttpPost]
         public ActionResult Save()
         {
             var sr = new StreamReader(Request.InputStream);
             var stream = sr.ReadToEnd();
             JavaScriptSerializer js = new JavaScriptSerializer();
             var list = js.Deserialize<List<Models.SelectList>>(stream);
             if (list.Any())
             {
                 foreach (var item in list)
                 {
                     
                 }
             }
             return View();
        }

 

SelectList对象类(类这里可以加[Serializable]或者不加,因为没有直接传输或存储SelectList对象,所以我这里没有加)

 

 public partial class SelectList
     {
         public int id { get; set; }
 
         public string name { get; set; }
 
         public string text { get; set; }
     }

 

大体思路是将json对象或数组转换为字符串,由前端传入服务端,Request接收,然后使用json反序列化为实体对象。试过action直接加string参数,但进入action后,接收不到传过来的json字串。当然,也可以将json字串直接保存在隐藏域,form提交到服务端获取。

转自:http://www.echojb.com/ajax/2016/11/20/264249.html

 

 

 

 

转载于:https://www.cnblogs.com/jellydong/p/7117349.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值