最近,新学c# mvc,通过ajax post方式传递数据到controller。刚开始传递参数,controller中总是为null。现记录一下,可能不全,纯粹记个学习日记。

重点在于参数的方式,代码为例子

1、这里  dataType: "json",表示返回的格式是json

前端: 
var saveAlbum = function () { $.ajax(
{
url: "/Home/PostAlbum",
type: "POST",
dataType: "json",
data: { AlbumName: "shanghai", Entered: "5/9/2013" },
success: function (result) {
alert(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[] == "{")
err = JSON.parse(xhr.responseText).message;
alert(err);
}
});
}
 controller: 

public ActionResult PostAlbum(test test)
{
string str = String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);
return Json(str);//--------对应请求中dataType: "json",表示需要返回json类型
//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);//------如果是string,则会报错
}

2、ajax请求中还要一个重要的参数: contentType: "application/json",表示传入参数的格式

 var saveAlbumJson = function () {

            $.ajax(
{
url: "/Home/PostAlbum",
type: "POST",
contentType: "application/json",
dataType:"json",
data: JSON.stringify({ "AlbumName": "shanghai", "Entered": "5/9/2013" }),
success: function (result) {
alert(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[] == "{")
err = JSON.parse(xhr.responseText).message;
alert(err);
}
});
}
 [HttpPost]
public ActionResult PostAlbum(test test)
{
string str = String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);//传入test实体
return Json(str);
//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);
}
 public class test
{
public string AlbumName { get; set; }
public DateTime Entered { get; set; }
}

3、如果要传入list<实体>,比如List<test>,需要把传入的data做转换

   var saveAlbumJsonList = function () {
$.ajax(
{
url: "/Home/AlbumList",
type: "POST",
contentType: "application/json",
dataType: "json",
data: JSON.stringify({"input":[{ AlbumName: "shanghai", Entered: "5/9/2013" },{...},{....}]}),
success: function (result) {
alert(result);
},
error: function (xhr, status, p3, p4) {
var err = "Error " + " " + status + " " + p3;
if (xhr.responseText && xhr.responseText[] == "{")
err = JSON.parse(xhr.responseText).message;
alert(err);
}
});
}
  public ActionResult PostAlbumList(List<test> input)//input必须要与data中数组中的key匹配
{
if (input != null)
{
string str = String.Format("保存成功PostAlbum:{0} {1:d}", input[].AlbumName, input[].Entered);
return Json(str);
}else
{
return Json("参数获取错误!");
}
//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);
}

4、由上面三个例子,很容易想到,传入多个list<实体>的方式

  function postEmployees() {
$.ajax({
type: "POST",
url: "/Home/Employees",
contentType: "application/json",
dataType: "json",
async: false,
data: JSON.stringify({
"Employees": [{ "Id": "", "lastName": "Gates" }, { "Id": "", "lastName": "Bush" }, { "Id": "", "lastName": "Carter" }],
"Employers": [{ "Id": "", "lastName": "Gates" }, { "Id": "", "lastName": "Bush" }, { "Id": "", "lastName": "Carter" }]
}),
success: function (jsonResult) {
alert(jsonResult);
}
});
}
  [HttpPost]
public async Task<ActionResult> Employees(List<Employee> Employees, List<Employee> Employers)
{
return Json("Employees", JsonRequestBehavior.AllowGet);
}
 public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; } public string LastName { get; set; }
}

JQuery.Ajax()的data参数传递方式的更多相关文章

  1. JQuery.Ajax()的data参数类型

    假如现在有这样一个表单,是添加元素用的. <form id='addForm' action='UserAdd.action' type='post'> <label for='un ...

  2. jQuery ajax的traditional参数的作用///////////////////////////////////zzzzzzzzzzz

    jQuery ajax的traditional参数的作用 i33 发布时间: 2013/04/03 10:05 阅读: 9859 收藏: 9 点赞: 1 评论: 0 一般的,可能有些人在一个参数有多个 ...

  3. jQuery Ajax Post Data Example

    http://www.formget.com/jquery-post-data/ jQuery Ajax Post Data Example Fugo Of FormGet jQuery $.post ...

  4. 关于Jquery中ajax方法data参数用法的总结

    data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQ ...

  5. jQuery.ajax()的相关参数及使用

    jQuery.ajax(),有很多项参数,小弟菜鸟级别,有时候想不起来,现在记录下来便于以后查看,也欢迎大神指正. 常用的几类,可以称为模板样式写法: $.ajax({ url: "url& ...

  6. jQuery ajax的traditional参数的作用

    一般的,可能有些人在一个参数有多个值的情况下,可能以某个字符分隔的形式传递,比如页面上有多个checkbox: ? 1 2 3 4 5 6 $.ajax{       url:"xxxx&q ...

  7. jQuery ajax传递特殊字符参数(例如+)

    使用jQuery ajax向后台传递参数para=1+1时后台接收到的参数为para=1 1,解决方案是 使用json传递,代码如下. var url = "/test/check" ...

  8. jquery ajax中data属性详解

    $.post.$.get是一些简单的方法,如果要处理复杂的逻辑,还是需要用到jQuery.ajax() 一.$.ajax的一般格式 $.ajax({ type: 'POST', url: url , ...

  9. jQuery ajax中的参数含义

    所有options均可选,下面简要说明每个option 1.async 默认为true,即请求为异步请求,这也是ajax存在的意义.但同时也可以将这个参数设置为false,实现同步请求.(同步请求会锁 ...

随机推荐

  1. 关于Context []startup failed due to previous errors

    文章转自:http://blog.sina.com.cn/s/blog_49b4a1f10100q93e.html 框架搭建好后,启动服务器出现如下的信息: log4j:WARN No appende ...

  2. 360在线网站安全检测,web安全测试AppScan扫描工具,XSS常用的攻击手法

    360在线网站安全检测,web安全测试AppScan扫描工具,XSS常用的攻击手法 如何做好网站的安全性测试 360网站安全检测 - 在线安全检测,网站漏洞修复,网站后门检测http://websca ...

  3. fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument

    fastDFS errcode:9 path:Bad file descriptor errcode:22 path:Invalid argument <error>status:4 er ...

  4. redis 哨兵机制环境搭建

    Redis哨兵机制,一主二从 注:Redis哨兵切换,建议一主多从 一.一主二从 教程步骤:https://www.cnblogs.com/zwcry/p/9046207.html 二.哨兵配置(se ...

  5. 2016NOI冬令营day3

    上午第一课堂  第一次感觉能听... IOI题目选讲挺不错的,比较有趣(yong4) :) 然而接下来的“基础”数据结构就太神了,完全不会QAQ :( 下午我听得比较认真,VFK讲的是下一代评测系统 ...

  6. web前端----css属性

    一.文本 1.文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 ...

  7. python条件判断if···else、循环while和for

    1.if···else条件判断基本语法 if 条件: 执行语句 elif 条件 : 执行语句 …… else : 执行语句 var=input("请输入表示会员级别的数字(1-5):&quo ...

  8. Python3 数字保留后几位

    Python3 数字保留后几位 方案一: 使用Python处理精度很重要的浮点数时,建议使用内置的Decimal库: from decimal import Decimal a = Decimal(' ...

  9. zabbix配置自动发现,故障邮件告警

    对网段内的主机进行自动发现,自动加入主机组,自定加入template 创建动作时,类型这里选择discovery 然后将发现的主机加入host group和template: 动作针对的是discov ...

  10. 20145310《网络对抗》逆向及Bof基础

    实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...