首页 > 代码库 > ASP.NET MVC Controller接收ajax post方式发送过来的json对象或数组数据

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

本例旨在说明我的一种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

 

 

 

 

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