前言

这几天在学习MVC使用AJAX异步刷,因为是新手。所以在js中传参数到后台以及后台返回数据到前台怎么接受,怎么前台遍历出JSON数据都开始不知道,相信新手在使用时跟我一样会遇到,这里我就和大家分享一下。新手勿喷。。。

这里使用VS2010中新建的mvc 3.0项目来举例说明

1、传递的是单个对象类型

先看后台action方法

public ActionResult GetValue()
{
ChangePasswordModel model1 = new ChangePasswordModel();
model1.OldPassword = "111";
model1.NewPassword = "222";

return this.Json(model1);//返回对象到前台

}

这样返回的model1对象就会传递到result中去,前台可以直接使用result.NewPassword来取值

如下

$.ajax(
{
url: "GetValue", //表示提交给的action
type: "post",   //提交方法
datatype: "json",//数据类型

success: function (result) { //返回的结果自动放在resut里面了

  alert(result.NewPassword);
}
});

2、传递的是对象数组也就是List集合,这里演示遍历数据,并异步刷新表格

后台获取对象集合

public ActionResult GetValue()
{

StudentService studentservice = new StudentService();
string studentlist= studentservice.SelectAll();
return this.Json(studentlist);

}
}

前台获取数据并刷新表格

<script type="text/javascript">
function shuxin() {

$.ajax(
{
url: "GetValue",
type: "post",
datatype: "json",
success: tableappend(result) //成功则执行表格刷新函数
});
}

//动态刷新表格
function tableappend(result) {
var studentlist = eval(result);

for (var i = 0; i < studentlist.length; i++) {
//创建tr对象
 var addtr = document.createElement("tr");

//行中创建三个td对象,并把studentlist中的值赋给它
var addtd1 = document.createElement("td");
addtd1.innerHTML = studentlist[i].sanme;
 var addtd2 = document.createElement("td");
 addtd2.innerHTML = studentlist[i].sage;
 var addtd3 = document.createElement("td");
 addtd3.innerHTML = studentlist[i].sex;

//把创建的td对象加入tr中去
 addtr.appendChild(addtd1);
 addtr.appendChild(addtd2);
 addtr.appendChild(addtd3);
//
//把tr加入table中去
 document.getElementById("retable").appendChild(addtr);
 }
 }
</script>

3、参数传递(另外的代码例子说明)

对于单个参数传递或者不同对象的参数可以直接使用{"key":value};的方式来传值

  $.ajax(
                     {
                         url: "update",
                         type: "post",
                         datatype: "json",
                         data:{"room_id":inputobj[0].innerText,"room_name":inputobj[1].innerText,"room_type":inputobj[2].innerText,
                             "room_limittime": inputobj[3].innerText, "username": inputobj[4].innerText, "room_state": inputobj[5].innerText
                         }, 
                         success: function (result) { //返回的结果自动放在resut里面了
                             if (result) {
                                alter();
                             }
                         }
                     });

后台使用 FormContext对象来获得参数

public ActionResult Update(FormCollection fc)
{
//获取前段传过来的参数
RoomModel room = new RoomModel();
room.RId =Convert.ToInt32(fc["room_id".Trim()]);
room.RName = fc["room_name".Trim()];
room.RType = fc["room_type".Trim()];
room.RLendLimitTime = Convert.ToInt32(fc["room_limittime".Trim()]);

...

...

}


这里看到传递多个参数的时候,前台和后台都很麻烦,能不能像页面表单一样直接可以把model对象给传递回去Controller呢?

当然这是可以的

把这些值封装一下就可以了,例如

<script type="text/javascript">
function shuxin() {

var model= {};
model.NewPassword= "123";
model.OldPassword = "456";

$.ajax(
{
url: "GetValue",
type: "post",
datatype: "json",

data:model,//在把这个对象作为参数传过去就可以了
success: tableappend(result) //成功则执行表格刷新函数
});
}

在后台

直接把model作为参数 这样值就会都封装给了model对象
public ActionResult update(ChangePasswordModel model)
{
   return View();
}

5、apsx和cshtml

JS中对JSON的取值方式是一样

MVC使用ajax异步刷新时怎样输出从后台中传过来的JSON数据的更多相关文章

  1. SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

    最近angularjs post到后台 400一头雾水 没有任何错误. 最后发现好文,感谢作者 SpringMVC中出现" 400 Bad Request "错误(用@Respon ...

  2. ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request 不进入controller

    今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语 ...

  3. AJAX 跨域请求的解决办法:使用 JSONP获取JSON数据

    由于受到浏览器的限制,ajax不允许跨域通信.如果尝试从不同的域请求数据,会出现安全错误.如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误.但是,如果仅停留在自己的服务器 ...

  4. IE内核发送ajax请求时不会将url中的参数编码

    有一次用户遇到创建文件,名称为中文时乱码的问题. 经调查,发现用户使用的是国产浏览器ie模式 抓取请求发现 IE: 键 值请求 POST /Handlers/CreateTxtFile.ashx?fi ...

  5. js 中ajax请求时设置 http请求头中的x-requestd-with= ajax

    今天发现 AngularJS 框架的$http服务提供的$http.get() /$http.post()的ajax请求中没有带 x-requested-with字段. 这样的话,后端的php 就无法 ...

  6. MVC中利用ViewBag传递Json数据时的前端处理方法

    用viewBag传递Json字符串到前端时,json字符串中的“会被转义为& quot,前端处理方法为@Html.Raw(Json.Encode(ViewBag.Data)),再用eval() ...

  7. 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据

    1:跨域请求handler一般处理程序 using System; using System.Collections.Generic; using System.Web; using System.W ...

  8. MVC之Ajax.BeginForm使用详解之更新列表 mvc验证jquery.unobtrusive-ajax

    MVC之Ajax.BeginForm使用详解之更新列表   1.首先,请在配置文件设置如下:(该项默认都存在且为true) <add key="UnobtrusiveJavaScrip ...

  9. 关于MVC接收Ajax调用无法访问的问题

    例如:下面代码有两个int类型的参数,如果Ajax调用时没有在data属性中为其赋值,AJAX会出500异常. public JsonResult GetList(int pageIndex, int ...

随机推荐

  1. LinqToDB 源码分析——设计原理

    我们知道实现了IQueryable<T>接口和IQueryProvider接口就可以使用Linq To SQL的功能.关于如何去实现的话,上一章也为我们引导了一个方向.LinqToDB框架 ...

  2. C# 视频编辑

    VidCoder VidCoder是一个开源免费的DVD/蓝光视频抓取和转码软件.使用HandBrake做为编码引擎.比Handbrake拥有更友好的用户界面. 可裁剪.剪切.字幕编辑.转码等. 官网 ...

  3. afxcomctl32.h与afxcomctl32.inl报错

    afxcomctl32.h与afxcomctl32.inl报错 编译公司一个几年前的老项目,是从VC6.0升级到VS2005的. 1.编译时报缺少头文件,于是附件包含目录,于是出现了以下报错: 1&g ...

  4. Navisworks Addin 插件集成

    调用Navisworks的 Api . 我这里是基于.NET 开发的. 我主要是尝试着获取一下工程量的API.不过还在研究. 插件的启动入口. //插件描述 [PluginAttribute(&quo ...

  5. Entity Framework Code First Migrations--EF 的数据迁移

    1. 为了演示方便,首先新建一个控制台项目,然后添加对entityframework的引用 使用nuget控制台执行: Install-Package EntityFramework 2.新建一个实体 ...

  6. 在QMainWindow中利用多个QDockWidget构成标签页tab(原创)

    功能描述: 在QMainWindow下,使用多个QDockWidget构成可切换,可拖动,可关闭的标签页:标签页的切换由相关联的QAction触发. 实现效果: 代码如下: QDockWidget * ...

  7. 超小Web手势库AlloyFinger原理

    目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用. 感兴趣的同学可以去Github看看:https://github.com/AlloyTeam/AlloyFi ...

  8. 判断终端的js

    $(function(){ var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ip ...

  9. 深入理解javascript选择器API系列第三篇——h5新增的3种selector方法

    × 目录 [1]方法 [2]非实时 [3]缺陷 前面的话 尽管DOM作为API已经非常完善了,但是为了实现更多的功能,DOM仍然进行了扩展,其中一个重要的扩展就是对选择器API的扩展.人们对jQuer ...

  10. 中国式商业智能报表ActiveReports免费公开课,10月20日开讲

    ActiveReports公开课全方位报表解决方案,满足商业报表五大需求 [开课时间]10月20日[主讲老师]葡萄城报表产品经理[开课形式]网络在线公开课[活动费用]前50名免费 适合人群:报表开发人 ...