jquery ajax传递data,JQuery.Ajax()的data参数传递方式

最近,新学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[0] == "{")

err=JSON.parse(xhr.responseText).message;

alert(err);

}

});

}

controller:

publicActionResult PostAlbum(test test)

{string str = String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);returnJson(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[0] == "{")

err=JSON.parse(xhr.responseText).message;

alert(err);

}

});

}

[HttpPost]publicActionResult PostAlbum(test test)

{string str = String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);//传入test实体returnJson(str);//return String.Format("保存成功PostAlbum:{0} {1:d}", test.AlbumName, test.Entered);

}

public classtest

{public string AlbumName { get; set; }public DateTime Entered { get; set; }

}

3、如果要传入list,比如List,需要把传入的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[0] == "{")

err=JSON.parse(xhr.responseText).message;

alert(err);

}

});

}

public ActionResult PostAlbumList(Listinput)//input必须要与data中数组中的key匹配

{if (input != null)

{string str = String.Format("保存成功PostAlbum:{0} {1:d}", input[0].AlbumName, input[0].Entered);returnJson(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": "1", "lastName": "Gates" }, { "Id": "2", "lastName": "Bush" }, { "Id": "3", "lastName": "Carter"}],"Employers": [{ "Id": "4", "lastName": "Gates" }, { "Id": "5", "lastName": "Bush" }, { "Id": "6", "lastName": "Carter"}]

}),

success: function (jsonResult) {

alert(jsonResult);

}

});

}

[HttpPost]public async Task Employees(List Employees, ListEmployers)

{return Json("Employees", JsonRequestBehavior.AllowGet);

}

public classEmployee

{public int Id { get; set; }public string FirstName { get; set; }public string LastName { get; set; }

}

原文:http://www.cnblogs.com/pauline/p/6696704.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值