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提交到服务端获取。

时间: 2024-10-02 08:28:12

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

.net Mvc Controller 接收 Json/post方式 数组 字典 类型 复杂对象

原文地址:http://www.cnblogs.com/fannyatg/archive/2012/04/16/2451611.html ------------------------------------------------------------------------------------------------------------------ Asp.net Mvc Controller Json数组接收数组字典 类型 复杂对象 方法一,(最复杂的方法)扩展ModelBin

ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中

ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET MVC搭建项目后台UI框架—4.tab多页签支持 ASP.NET MVC搭建项目后台UI框架—5.Demo演示Controller和View的交互 ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页) ASP.NET MVC搭建项目后台UI框架—7.统计报表 ASP.NE

ASP.NET MVC学习之Ajax(完结)

一.前言 通过上面的一番学习,大家一定收获不少.但是总归会有一个结束的时候,但是这个结束也意味着新的开始. 如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发ajax十分的简单,而ASP.NET MVC学习到现在页面都是刷新的,所以这节就是ASP.NET MVC的最后一节,通过这节的学习我们将能够实现通过ajax提交表单,下面我们开始继续学习. 二.准备工作 1.首先确保引用了以下js库在_Layout中: 2.新建一个HomeController,然后在其

[转]深入ASP.NET MVC之九:Ajax支持

本文转自:http://www.cnblogs.com/yinzixin/archive/2012/12/22/2824384.html 目前前端页面和服务端进行Ajax交互大多采用的都是jQuery, ASP.NET MVC提供了一些方法使得这个过程变得更加容易.常见的Ajax应用场景有两种,一个是点击一个链接,然后局部加载一些内容,可以是html片段,也可能是json数据,然后通过前端js处理之后显示:另一个是异步提交表单.这些帮助方法都是位于AjaxExtensions种的扩展方法.先看第

Spring MVC Controller中解析GET方式的中文参数会乱码的问题

Spring MVC Controller中解析GET方式的中文参数会乱码的问题 问题描述 在工作上使用Spring老是碰到一个问题,使用Controller处理GET方式的请求参数时,服务端得到的结果会碰到乱码,之前翻阅了很多与Java EE相关的很多乱码处理资料,不管是加过滤器还是统一文件编码,都没能正确解决,后来设计接口时,一直采用先Base64,然后再作为参数传过来的方式解决的.最近找到了根本的解决方案,顺手记下来. 为何会乱码 Spring MVC 是基于Servlet,在Http请求

Spring MVC Controller中解析GET方式的中文参数会乱码的问题(tomcat如何解码)

Spring MVC Controller中解析GET方式的中文参数会乱码的问题 问题描述 在工作上使用突然出现从get获取中文参数乱码(新装机器,tomcat重新下载和配置),查了半天终于找到解决办法. 为何会乱码 Spring MVC 是基于Servlet,在Http请求到达Servlet解析之前,GET过来的URL已经被Tomcat先做了一次URLDecode.Tomcat对GET方式默认的URL解码结果是iso-8859-1而不是我认为的UTF-8. 解决方案 解决方案也很简单,除了平常

ASP.NET MVC:通过 FileResult 向 浏览器 发送文件

FileResult is an abstract base class for all the others. FileContentResult - you use it when you have a byte array you would like to return as a file FilePathResult - when you have a file on disk and would like to return it's content (you give a path

echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端

1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小demo的效果图如下:(很熟悉,有没有) 2.按照echarts的使用方法新建一个echarts.html文件.为ECharts准备一个具备大小(宽高)的Dom(讲的有点细,熟悉的朋友直接跳过) <!DOCTYPE html> <head> <meta charset="u

asp.net MVC之整合AJAX

本文转自 http://www.cnblogs.com/leoo2sk/archive/2008/11/03/1325840.html 摘要本文将从完成“输入数据验证”这个功能出发,逐渐展开ASP.NET MVC与Ajax结合的方法.首先,本文将使用ASP.NET MVC提供的同步方式完成数据验证.而后,将分别结合ASP.NET AJAX和JQuery将这个功能重构成异步形式. 数据验证 原来录入页面时没有数据验证的:在标题或内容没有输入的情况下仍能保存.如下图 首先,我们要修改一下Releas