zoukankan      html  css  js  c++  java
  • ASP.NET MVC Controller接收ajax post方式发送过来的json对象或数组数据

      本例旨在说明我的一种Controller接收ajax提交(POST)过来的json对象或数组信息的方式,感觉应该有更好的方式,欢迎提出宝贵意见。

      JSON.stringify(jsonObj)不支持IE8以下浏览器

      前端页面代码如下:

     1 <script type="text/javascript" src="~/Scripts/jquery-1.11.3.js"></script>
     2 <form id="fm">
     3     <div>
     4         <input id="btn" type="button" value="提交" onclick="SaveTest()" />
     5     </div>
     6 </form>
     7 <script>
     8     function SaveTest() {
     9         var jsonObj = [];
    10         jsonObj.push({"id":1,"name":"123"});
    11         jsonObj.push({"id":2,"name":"234"});
    12         jsonObj.push({ "id": 3, "name": "345" });
    13         $.ajax({
    14             url: "/Test/Save",
    15             type: "post",
    16             dataType: "json",
    17             async:false,
    18             data: JSON.stringify(jsonObj),
    19             success: function (data) {
    20 
    21             },
    22             error: function (XMLHttpRequest, textStatus, errorThrown) {
    23                 alert(XMLHttpRequest.status);
    24                 alert(XMLHttpRequest.readyState);
    25                 alert(textStatus);
    26             }
    27         });
    28     }
    29 </script>

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

     1 [HttpPost]
     2         public ActionResult Save()
     3         {
     4             var sr = new StreamReader(Request.InputStream);
     5             var stream = sr.ReadToEnd();
     6             JavaScriptSerializer js = new JavaScriptSerializer();
     7             var list = js.Deserialize<List<Models.SelectList>>(stream);
     8             if (list.Any())
     9             {
    10                 foreach (var item in list)
    11                 {
    12                     
    13                 }
    14             }
    15             return View();
    16         }

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

    1 public partial class SelectList
    2     {
    3         public int id { get; set; }
    4 
    5         public string name { get; set; }
    6 
    7         public string text { get; set; }
    8     }

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

  • 相关阅读:
    TortoiseSVN 使用详细步骤(三):安装
    TortoiseSVN使用详细步骤(二)
    TortoiseSVN使用详细步骤(一)
    IIS7下访问ashx页面,显示404
    Learning Python 008 正则表达式-003 search()方法
    Learning Python 008 正则表达式-002 findall()方法
    Learning Python 008 正则表达式-001
    Learning Python 007 基本语句
    Learning Python 006 list(列表) 和 tuple(元组)
    Learning Python 005 字符串和编码
  • 原文地址:https://www.cnblogs.com/Chaser-Eagle/p/6082020.html
Copyright © 2011-2022 走看看