zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    go语言实现拉取矿币最新价格等信息
    MySQL 8 主从搭建
    小米11ULTRA偷渡开发版+刷MAGISK+EDXPOSED
    常见插值算法--拉格朗日插值、三次卷积插值、三次样条插值、兰克索斯插值
    Effective Python Ver2.0_StudyNotes_纯属性与修饰器取代旧式的setter与getter方法
    Effective Python Ver2.0_StudyNotes_使用类体系去解决多层嵌套问题
    c# 异步调用 利用委托异步调用
    redis设计与实现-读书笔记
    springboot揭秘-读书笔记
    redis深度历险-读书笔记
  • 原文地址:https://www.cnblogs.com/jellydong/p/7117349.html
Copyright © 2011-2022 走看看