jquery与json的结合
通过AJAX异步减少网络内容传输,而JSON则可以把传输内容缩减到纯数据;然后利用jQuery内置的AJAX功能直接获得JSON格式的数据;在客户端直接绑定到数据控件里面,从而达到最优。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
|
//////1.设计htm页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > <html xmlns= "http://www.w3.org/1999/xhtml" > <head> <title>test2</title> <script language= "javascript" type= "text/javascript" src= "js/jquery-latest.pack.js" ></script> <script language= "javascript" type= "text/javascript" src= "js/PageDate.js" ></script> </head> <body> <div> <div> <br /> <input id= "first" type= "button" value= " << " /><input id= "previous" type= "button" value= " < " /><input id= "next" type= "button" value= " > " /><input id= "last" type= "button" value= " >> " /> <span id= "pageinfo" ></span> <ul id= "datas" > <li id= "template" > <span id= "OrderID" > 订单ID </span>/ <span id= "CustomerID" > 客户ID </span> <span id= "EmployeeID" > 雇员ID </span>/ <span id= "OrderDate" > 订购日期 </span>/ <span id= "ShippedDate" > 发货日期 </span>/ <span id= "ShippedName" > 货主名称 </span>/ <span id= "ShippedAddress" > 货主地址 </span>/ <span id= "ShippedCity" > 货主城市 </span>/ <span id= "more" > 更多信息 </span> </li> </ul> </div> <div id= "load" style= "left: 0px; position: absolute; top: 0px; margin: 0px !important; padding: 0px !important; outline: 0px !important; border: 0px !important; vertical-align: baseline !important; font-size: 1em !important; border-radius: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.1em !important; overflow: visible !important; position: static !important; right: auto !important; top: auto !important; width: auto !important; box-sizing: content-box !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; min-height: auto !important; background: none !important;">> LOADING.... </div> <input type= "hidden" id= "pagecount" /> </div> </body> </html> ////注:ID属性比较重要,用于数据绑定。 /////2.使用jQuery编写AJAX请求文件 var pageIndex = 1 var pageCount = 0; $( function (){ GetPageCount(); //取得分页总数 pageCount = parseInt($( "#pagecount" ).val()); //分页总数放到变量pageCount里 $( "#load" ).hide(); //隐藏loading提示 $( "#template" ).hide(); //隐藏模板 ChangeState(0,1); //设置翻页按钮的初始状态 bind(); //绑定第一页的数据 //第一页按钮click事件 $( "#first" ).click( function (){ pageIndex = 1; ChangeState(0,1); bind(); }); //上一页按钮click事件 $( "#previous" ).click( function (){ pageIndex -= 1; ChangeState(-1,1); if (pageIndex <= 1) { pageIndex = 1; ChangeState(0,-1); } bind(); }); //下一页按钮click事件 $( "#next" ).click( function (){ pageIndex += 1; ChangeState(1,-1); if (pageIndex>=pageCount) { pageIndex = pageCount; ChangeState(-1,0); } bind(pageIndex); }); //最后一页按钮click事件 $( "#last" ).click( function (){ pageIndex = pageCount; ChangeState(1,0); bind(pageIndex); }); }); //AJAX方法取得数据并显示到页面上 function bind() { $( "[@id=ready]" ).remove(); $( "#load" ).show(); $.ajax({ type: "get" , //使用get方法访问后台 dataType: "json" , //返回json格式的数据 url: "Handler.ashx" , //要访问的后台地址 data: "pageIndex=" + pageIndex, //要发送的数据 complete : function (){$( "#load" ).hide();}, //AJAX请求完成时隐藏loading提示 success: function (msg){ //msg为返回的数据,在这里做数据绑定 var data = msg.table; $.each(data, function (i, n){ var row = $( "#template" ).clone(); row.find( "#OrderID" ).text(n.OrderID); row.find( "#CustomerID" ).text(n.CustomerID); row.find( "#EmployeeID" ).text(n.EmployeeID); row.find( "#OrderDate" ).text(ChangeDate(n.OrderDate)); if (n.RequiredDate !== undefined) row.find( "#ShippedDate" ).text(ChangeDate(n.RequiredDate)); row.find( "#ShippedName" ).text(n.ShipName); row.find( "#ShippedAddress" ).text(n.ShipAddress); row.find( "#ShippedCity" ).text(n.ShipCity); row.find( "#more" ).html( "<a href=OrderInfo.aspx?id=" + n.OrderID + "&pageindex=" +pageIndex+ "> More</a>" ); row.attr( "id" , "ready" ); //改变绑定好数据的行的id row.appendTo( "#datas" ); //添加到模板的容器中 }); $( "[@id=ready]" ).show(); SetPageInfo(); } }); } function ChangeDate(date) { return date.replace( "-" , "/" ).replace( "-" , "/" ); } //设置第几页/共几页的信息 function SetPageInfo() { $( "#pageinfo" ).html(pageIndex + "/" + pageCount); } //AJAX方法取得分页总数 function GetPageCount() { $.ajax({ type: "get" , dataType: "text" , url: "Handler.ashx" , data: "getPageCount=1" , async: false , success: function (msg){ $( "#pagecount" ).val(msg); } }); } //改变翻页按钮状态 function ChangeState(state1,state2) { if (state1 == 1) { document.getElementById( "first" ).disabled = "" ; document.getElementById( "previous" ).disabled = "" ; } else if (state1 == 0) { document.getElementById( "first" ).disabled = "disabled" ; document.getElementById( "previous" ).disabled = "disabled" ; } if (state2 == 1) { document.getElementById( "next" ).disabled = "" ; document.getElementById( "last" ).disabled = "" ; } else if (state2 == 0) { document.getElementById( "next" ).disabled = "disabled" ; document.getElementById( "last" ).disabled = "disabled" ; } } /////3.利用JSON三方控件在服务器端获取JSON格式数据 <%@ WebHandler Language= "C#" Class= "jQueryJSON.Handler" %> using System; using System.Data; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; using System.Configuration; using System.Data.SqlClient; using System.Text; using System.Xml; using NetServ.Net.Json; namespace jQueryJSON { /// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/json/" )] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Handler : IHttpHandler { readonly int PageSize = int .Parse(ConfigurationManager.AppSettings[ "PageSize" ]); public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain" ; //不让浏览器缓存 context.Response.Buffer = true ; context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); context.Response.AddHeader( "pragma" , "no-cache" ); context.Response.AddHeader( "cache-control" , "" ); context.Response.CacheControl = "no-cache" ; string result = "" ; if (context.Request.Params[ "getPageCount" ] != null ) result = GetPageCount(); if (context.Request.Params[ "pageIndex" ] != null ) { string pageindex = context.Request.Params[ "pageIndex" ]; //if (context.Cache.Get(pageindex) != null) // result = context.Cache.Get(pageindex).ToString(); //else //{ // result = GetPageData(context.Request.Params["pageIndex"]); // context.Cache.Add( // pageindex, // result, // null, // DateTime.Now.AddMinutes(1), // System.Web.Caching.Cache.NoSlidingExpiration, // System.Web.Caching.CacheItemPriority.Default, // null); //} result = GetPageData(context.Request.Params[ "pageIndex" ]); } context.Response.Write(result); } private string GetPageData(string p) { int PageIndex = int .Parse(p); string sql; if (PageIndex == 1) sql = "select top " + PageSize.ToString() + " * from Orders order by OrderID desc" ; else sql = "select top " + PageSize.ToString() + " * from Orders where OrderID not in(select top " + ((PageIndex - 1) * PageSize).ToString() + " OrderID from Orders order by OrderID desc) order by OrderID desc" ; string dbfile = ConfigurationManager.ConnectionStrings[ "conn" ].ToString(); SqlConnection conn = new SqlConnection(dbfile); SqlDataAdapter da = new SqlDataAdapter(sql, conn); DataTable dt = new DataTable( "table" ); da.Fill(dt); return DataTableJson(dt); } private string GetPageCount() { string dbfile = ConfigurationManager.ConnectionStrings[ "conn" ].ToString(); SqlConnection conn = new SqlConnection(dbfile); SqlCommand cmd = new SqlCommand( "select count(*) from Orders" , conn); conn.Open(); int rowcount = Convert.ToInt32(cmd.ExecuteScalar()); conn.Close(); return ((rowcount + PageSize - 1) / PageSize).ToString(); } private string DataTable2Json(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append( "{\"" ); jsonBuilder.Append(dt.TableName); jsonBuilder.Append( "\":[" ); for ( int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append( "{" ); for ( int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append( "\"" ); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append( "\":\"" ); jsonBuilder.Append(dt.Rows[i][j].ToString()); jsonBuilder.Append( "\"," ); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append( "}," ); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append( "]" ); jsonBuilder.Append( "}" ); return jsonBuilder.ToString(); } private string DataTableJson(DataTable dt) { JsonWriter writer = new JsonWriter(); JsonObject content = new JsonObject(); JsonArray Orders = new JsonArray(); JsonObject Order; JsonObject OrderItem = new JsonObject(); for ( int i = 0; i < dt.Rows.Count; i++) { Order = new JsonObject(); for ( int j =0;j<dt.Columns.Count;j++) { Order.Add(dt.Columns[j].ColumnName, dt.Rows[i][j].ToString()); } Orders.Add(Order); } content.Add(dt.TableName, Orders); content.Write(writer); writer = new IndentedJsonWriter(); content.Write(writer); return writer.ToString(); } public bool IsReusable { get { return false ; } } } } |
jquery与json的结合的更多相关文章
- jQuery对json快速赋值
jQuery对json快速赋值,重点在于将input的id取跟JSON同样的名称. <!DOCTYPE html> <html> <head lang="en& ...
- 用jquery解析JSON数据的方法以及字符串转换成json的3种方法
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...
- [转]jquery 对 Json 的各种遍历
原文地址:http://caibaojian.com/jquery-each-json.html 概述 JSON(javascript Object Notation) 是一种轻量级的数据交换格式,采 ...
- jQuery.parseJSON(json) 使用方法
jQuery.parseJSON(json) 接受一个JSON字符串,返回解析后的对象. 返回值:String传入一个畸形的JSON字符串会抛出一个异常.比如下面的都是畸形的JSON字符串:{test ...
- JQuery 获取json数据$.getJSON方法的实例代码
这篇文章介绍了JQuery 获取json数据$.getJSON方法的实例代码,有需要的朋友可以参考一下 前台: function SelectProject() { var a = new Array ...
- [Javascript,JSON] JQuery处理json与ajax返回JSON实例
转自:http://www.php100.com/html/program/jquery/2013/0905/5912.html [导读] json数据是一种经型的实时数据交互的数据存储方法,使用到最 ...
- jQuery解析JSON的问题
在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. JS ...
- (转)JQuery处理json与ajax返回JSON实例
son数据是一种经型的实时数据交互的数据存储方法,使用到最多的应该是ajax与json配合使用了,下面我来给大家介绍jquery处理json数据方法. 一.JSON的一些基础知识. JSON中对象通过 ...
- jQuery读取json文件,实现省市区/县(国标)三级联动
最近做一个微信项目,需要用户填写所在的省市区/县,决定使用jQuery读取json文件来实现省市区/县的联动. 其实很简单,jQuery文档也有详细解释: 代码如下: html <table w ...
- [转] jQuery 操作 JSON 数据
jquery下json数组的操作用法实例: jquery中操作JSON数组的情况中遍历方法用的比较多,但用添加移除这些好像就不是太多了. 试过json[i].remove(),json.remove( ...
随机推荐
- Mac下显示和隐藏隐藏文件的命令
打开终端,输入: 1.defaults write com.apple.finder AppleShowAllFiles -bool true 此命令显示隐藏文件defaults write com. ...
- ECharts3.0饼状图使用问题总结
前提:本人使用的是IE9浏览器 1.IE中无法显示,谷歌却显示正常的问题: 1)情况一 var myChart_cols<%=i%> = echarts.init(document.get ...
- spring jpa和mybatis整合
spring jpa和mybatis整合 前一阵子接手了一个使用SpringBoot 和spring-data-jpa开发的项目 后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查 ...
- 装饰器模式(Decorator Pattern)
装饰器模式 一.什么是装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装 ...
- 南阳nyoj 509 因子和阶乘
因子和阶乘 时间限制:1000 ms | 内存限制:65535 KB 难度:2 http://acm.nyist.net/JudgeOnline/problem.php?pid=509 描述 给 ...
- 仿ElementUI构建自己的Vue组件库用babel-plugin-component按需加载组件及自定义SASS主题
最近使用ElementUI做项目的时候用Babel的插件babel-plugin-component做按需加载,使得组件打包的JS和CSS包体积大大缩小,加载速度也大大提升,所有想模仿做一个组件库也来 ...
- webpack2引入bootstrap的坑
在webpack官网教程的代码分离-css章节中,给出的例子是这样的. //安装 ExtractTextWebpackPlugin 如下 npm install --save-dev extract- ...
- WDCP上传SSL证书
1.在线申请SSL证书 2.网站管理>SSL证书上传 3.将key文件直接上传,cert文件内容复制到crt文件中,再上传 4.开启https 注意:同一个域名下解析的若干域名,只能走主域名的证 ...
- React之浅拷贝与深拷贝
最近发现的一个bug让我从react框架角度重新复习了一遍浅拷贝与深拷贝. 浅拷贝,就是两个变量都是指向一个地址,改变了一个变量,那另一个变量也随之改变.这就是浅拷贝带来的副作用,两个变量会相互影响到 ...
- 玩转Android拍摄功能
简单拍照与摄像 在富媒体开始流行之前,整个世界是一个灰暗且平淡无奇的地方.还记得Gopher吗?我或许不记得了.自从APP成为用户生活的一部分之后,这便给他们提供了一种方式可以来存放他们生活的细节.使 ...