jQuery内置的AJAX功能和JSON的使用实例


Posted in Javascript onJuly 27, 2014

通过jQuery内置的AJAX功能,直接访问后台获得JSON格式的数据,然后通过jQuer把数据绑定到事先设计好的html模板上,直接在页面上显示。
我们先来看一下html模板:

<table id="datas" border="1" cellspacing="0" style="border-collapse: collapse">
<tr>
<th>
订单ID</th>
<th>
客户ID</th>
<th>
雇员ID</th>
<th>
订购日期</th>
<th>
发货日期</th>
<th>
货主名称</th>
<th>
货主地址</th>
<th>
货主城市</th>
<th>
更多信息</th>
</tr>
<tr id="template">
<td id="OrderID">
</td>
<td id="CustomerID">
</td>
<td id="EmployeeID">
</td>
<td id="OrderDate">
</td>
<td id="ShippedDate">
</td>
<td id="ShippedName">
</td>
<td id="ShippedAddress">
</td>
<td id="ShippedCity">
</td>
<td id="more">
</td>
</tr>
</table>

一定要注意的就是里面所有的id属性,这个是一个关键。再来看一下AJAX请求和绑定数据的代码

$.ajax({
type: "get",//使用get方法访问后台
dataType: "json",//返回json格式的数据
url: "BackHandler.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.订单ID);
row.find("#CustomerID").text(n.客户ID);
row.find("#EmployeeID").text(n.雇员ID);
row.find("#OrderDate").text(ChangeDate(n.订购日期));
if(n.发货日期!== undefined) row.find("#ShippedDate").text(ChangeDate(n.发货日期));
row.find("#ShippedName").text(n.货主名称);
row.find("#ShippedAddress").text(n.货主地址);
row.find("#ShippedCity").text(n.货主城市);
row.find("#more").html("<a href=OrderInfo.aspx?id=" + n.订单ID + "&pageindex="+pageIndex+"> More</a>"); 
row.attr("id","ready");//改变绑定好数据的行的id
row.appendTo("#datas");//添加到模板的容器中
});

这个是jQuery的AJAX方法,返回数据并不复杂,主要说明一下怎么把数据按模板的定义显示到到页面上。首先是这个“var row = $("#template").clone();”先把模板复制一份,接下来row.find("#OrderID").text(n.订单ID);,表示找到id=OrderID的标记,设置它的innerText为相应的数据,当然也可以设置为html格式的数据。或者是通过外部的函数把数据转换成需要的格式,比如这里row.find("#OrderDate").text(ChangeDate(n.订购日期));有点服务器控件做模板绑定数据的感觉。
所有的这些,都是放在一个静态的页面里,只通过AJAX方法从后台获取数据,所有html代码如下:

<!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>test1</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>
<table id="datas" border="1" cellspacing="0" style="border-collapse: collapse">
<tr>
<th>
订单ID</th>
<th>
客户ID</th>
<th>
雇员ID</th>
<th>
订购日期</th>
<th>
发货日期</th>
<th>
货主名称</th>
<th>
货主地址</th>
<th>
货主城市</th>
<th>
更多信息</th>
</tr>
<tr id="template">
<td id="OrderID">
</td>
<td id="CustomerID">
</td>
<td id="EmployeeID">
</td>
<td id="OrderDate">
</td>
<td id="ShippedDate">
</td>
<td id="ShippedName">
</td>
<td id="ShippedAddress">
</td>
<td id="ShippedCity">
</td>
<td id="more">
</td>
</tr>
</table>
</div>
<div id="load" style="left: 0px; position: absolute; top: 0px; background-color: red">
LOADING....
</div>
<input type="hidden" id="pagecount" />
</div>
</body>
</html>

PageData.js就是包括上面AJAX请求和绑定数据代码的js,整个页面连form都不用,这样做有什么好处呢。再看下面一个模板

<ul id="datas">
<li id="template">
<span id="OrderID">
fsdfasdf
</span>
<span id="CustomerID">
</span>
<span id="EmployeeID">
</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>

还 是要注意id属性。大家看到这里应该明白了,不管用什么样的表现形式,只要id属性相同,就可以把数据绑定到对应的位置。这样的话,我们这些做程序的就不 会因为美工的修改而修改代码了,而且美工也只要做出html就可以了,不需要为服务器控件做模板(不过我还没遇到过这样的美工,都是美工设计好了我来改成 服务器控件的模板)。

再简单说一下AJAX请求的后台,用的是Access的Northwind数据库,把订单表放到DataTable里,然后通过DataTable2JSON转化成JSON数据格式传回来就完了,不过后台用了一些分页和缓存的方法,希望对初学者有一些帮助。

Javascript 相关文章推荐
Js+Flash实现访问剪切板操作
Nov 20 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
Mar 02 Javascript
jquery实现Ctrl+Enter提交表单的方法
Jul 21 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
Nov 10 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
Jan 22 Javascript
如何重置vue打印变量的显示方式
Dec 06 Javascript
jquery+css3实现熊猫tv导航代码分享
Feb 12 jQuery
微信小程序实现展示评分结果功能
Feb 15 Javascript
Vue 递归多级菜单的实例代码
May 05 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
May 15 Javascript
vue多页面项目中路由使用history模式的方法
Sep 23 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 #Javascript
jquery JSON的解析方式示例介绍
Jul 27 #Javascript
jQuery提交多个表单的小技巧
Jul 27 #Javascript
用javascript对一个json数组深度赋值示例
Jul 27 #Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 #Javascript
多个$(document).ready()的执行顺序实例分析
Jul 26 #Javascript
jquery 取子节点及当前节点属性值
Jul 25 #Javascript
You might like
PHP数组相关函数汇总
2015/03/24 PHP
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
js实现图片旋转的三种方法
2014/04/10 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
详解Vue整合axios的实例代码
2017/06/21 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
JS实现颜色的10进制转化成rgba格式的方法
2017/09/04 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
js常见遍历操作小结
2019/06/06 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
Python导入txt数据到mysql的方法
2015/04/08 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python能做哪方面的工作
2020/06/15 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
团干部培训方案
2014/06/03 职场文书
法语专业求职信
2014/07/20 职场文书
作风整顿剖析材料
2014/09/30 职场文书
后进基层党组织整改方案
2014/10/25 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
党支部工作总结2015
2015/04/01 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
拔河比赛新闻稿
2015/07/17 职场文书