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应用之禁止抓屏、复制、打印
Feb 21 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
Jan 04 Javascript
setTimeout的延时为0时多个浏览器的区别
May 23 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
vue-cli 打包使用history模式的后端配置实例
Sep 20 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
Nov 26 Javascript
基于javascript实现碰撞检测
Mar 12 Javascript
JavaScript布尔运算符原理使用解析
May 06 Javascript
JavaScript的垃圾回收机制与内存管理
Aug 06 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
python解析html开发库pyquery使用方法
2014/02/07 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
python数据化运营的重要意义
2019/11/25 Python
python自动点赞功能的实现思路
2020/02/26 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
几个常见的软件测试问题
2016/09/07 面试题
创业计划书如何吸引他人眼球
2014/01/10 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
春游踏青活动方案
2014/08/14 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
基层工作经历证明
2015/06/19 职场文书
七年级语文教学反思
2016/03/03 职场文书