多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > web前端 > jquery > 使用jQuery向asp.net Mvc傳遞復(fù)雜json數(shù)據(jù)-ModelBinder篇

使用jQuery向asp.net Mvc傳遞復(fù)雜json數(shù)據(jù)-ModelBinder篇

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-04-27 16:41:58 閱讀次數(shù):3970次
jQuery提供的ajax方法能很方便的實(shí)現(xiàn)客戶端與服務(wù)器的異步交互,在asp.net mvc 框架使用jQuery能很方便地異步獲取提交數(shù)據(jù),給用戶提供更好的體驗(yàn)!

調(diào)用jQuery的ajax方法時(shí),jQuery會(huì)根據(jù)post或者get協(xié)議對(duì)參數(shù)data進(jìn)行序列化;

如果提交的數(shù)據(jù)使用復(fù)雜的json數(shù)據(jù),例如:

{userId:32323,userName:{firstName:"李",lastName:"李大嘴"}}

那么服務(wù)器是無(wú)法正常接收到完整的參數(shù),因?yàn)閖Query對(duì)data的序列化,是使用了鍵值對(duì)拼裝的方式;

參數(shù)拼裝成 userId=32323&userName=object ; userName所指向的對(duì)象被序列化成字符串"object"

如何才能把一個(gè)復(fù)雜的object對(duì)象提交到后臺(tái)的action參數(shù)中呢?

首先,解決jQuery對(duì)于參數(shù)序列化的問(wèn)題:

1 /*對(duì)象序列化為字符串*/
2 String.toSerialize = function(obj) {
3 var ransferCharForJavascript = function(s) {
4 var newStr = s.replace(
5 /[x26x27x3Cx3Ex0Dx0Ax22x2Cx5Cx00]/g,
6 function(c) {
7 ascii = c.charCodeAt(0)
8 return 'u00' + (ascii < 16 ? '0' + ascii.toString(16) : ascii.toString(16))
9 }
10 );
11 return newStr;
12 }
13 if (obj == null) {
14 return null
15 }
16 else if (obj.constructor == Array) {
17 var builder = [];
18 builder.push("[");
19 for (var index in obj) {
20 if (typeof obj[index] == "function") continue;
21 if (index > 0) builder.push(",");
22 builder.push(String.toSerialize(obj[index]));
23 }
24 builder.push("]");
25 return builder.join("");
26 }
27 else if (obj.constructor == Object) {
28 var builder = [];
29 builder.push("{");
30 var index = 0;
31 for (var key in obj) {
32 if (typeof obj[key] == "function") continue;
33 if (index > 0) builder.push(",");
34 builder.push(String.format(""{0}":{1}", key, String.toSerialize(obj[key])));
35 index++;
36 }
37 builder.push("}");
38 return builder.join("");
39 }
40 else if (obj.constructor == Boolean) {
41 return obj.toString();
42 }
43 else if (obj.constructor == Number) {
44 return obj.toString();
45 }
46 else if (obj.constructor == String) {
47 return String.format('"{0}"', ransferCharForJavascript(obj));
48 }
49 else if (obj.constructor == Date) {
50 return String.format('{"__DataType":"Date","__thisue":{0}}', obj.getTime() - (new Date(1970, 0, 1, 0, 0, 0)).getTime());
51 }
52 else if (this.toString != undefined) {
53 return String.toSerialize(obj);
54 }
55 }
56

jQuery異步請(qǐng)求:

1 $(function() {
2 /*按鈕點(diǎn)擊事件*/
3 $("#btn_post_test").click(function() {
4 var data = [
5 { UserId: "11", UserName: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] },
6 { UserId: "22", UserName: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] },
7 { UserId: "33", UserName: { FirstName: "323", LastName: "2323" }, Keys: ["xiaoming", "xiaohong"] }
8 ];
9
10 $.post("Home/Test", { users: String.toSerialize(data) }, function(text) {
11 alert(String.toSerialize(text));
12 }, "json");
13 });
14 });

點(diǎn)擊按鈕提交數(shù)據(jù),監(jiān)控瀏覽器,可以發(fā)現(xiàn)提交的數(shù)據(jù)是json對(duì)象的序列化后的內(nèi)容:

1 POST /Home/Test HTTP/1.1
2 x-requested-with: XMLHttpRequest
3 Accept-Language: zh-cn
4 Referer: http://localhost:3149/test.html
5 Accept: application/json, text/javascript, */*
6 Content-Type: application/x-www-form-urlencoded
7 Accept-Encoding: gzip, deflate
8 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E)
9 Host: localhost:3149
10 Content-Length: 501
11 Connection: Keep-Alive
12 Cache-Control: no-cache
13 Cookie: CookieGlobalLoginUserID=16063
14
15 users=%5B%7B%22UserId%22%3A%2211%22%2C%22Name%22%3A%7B%22FirstName%22%3A%22323%22%2C%22LastName%22%3A%222323%22%7D%2C%22Keys%22%3A%5B%22xiaoming%22%2C%22xiaohong%22%5D%7D%2C%7B%22UserId%22%3A%2222%22%2C%22Name%22%3A%7B%22FirstName%22%3A%22323%22%2C%22LastName%22%3A%222323%22%7D%2C%22Keys%22%3A%5B%22xiaoming%22%2C%22xiaohong%22%5D%7D%2C%7B%22UserId%22%3A%2233%22%2C%22Name%22%3A%7B%22FirstName%22%3A%22323%22%2C%22LastName%22%3A%222323%22%7D%2C%22Keys%22%3A%5B%22xiaoming%22%2C%22xiaohong%22%5D%7D%5D

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 一级做a爰片久久毛片 | 欧美人与性动交α欧美精品图片 | 一级毛片在线免费看 | 久久亚洲欧洲日产国码 | 国内精品福利 | 中文字幕一区精品欧美 | v片免费在线观看 | 亚洲激情中文字幕 | 叼嘿视频在线观看 | 亚洲一区www | 日本大胆欧美艺术337p | 国产亚洲精品日韩已满十八 | 亚洲视频黄 | 国产精品三级在线观看 | 亚洲私人影院 | 性色xxx| 欧美色视频免费高清播放 | 波多野结衣久久一区二区 | 成人在线天堂 | 亚洲免费不卡 | 亚洲国产一区二区三区最新 | 日本高清中文字幕视频在线 | 一级黄色欧美 | 亚洲第一网站 | 91福利片 | 亚洲国产成人久久精品图片 | 欧美一区二区三区不卡免费观看 | 国产嫩草影院精品免费网址 | 国内精品伊人久久大香线焦 | 亚洲图欧美 | 亚洲午夜久久影院 | 中文字幕在线日本 | 另类小说综合 | 国产成人精品男人免费 | 久久手机看片 | 伊人不卡 | 欧美一级特黄毛片视频 | 一区二区三区视频免费 | 国产jizzjizz免费看麻豆 | 欧美最猛性xxxx高清 | 尤物精品视频 |