基于jQuery的AJAX和JSON实现纯html数据模板


Posted in Javascript onAugust 09, 2016

通过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(www.baidu.com)转化成JSON数据格式传回来就完了,不过后台用了一些分页和缓存的方法,希望对初学者有一些帮助。

test.htm

基于jQuery的AJAX和JSON实现纯html数据模板

基于jQuery的AJAX和JSON实现纯html数据模板

Javascript 相关文章推荐
js Flash插入函数免激活代码
Mar 31 Javascript
用JS实现一个TreeMenu效果分享
Aug 28 Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 Javascript
JS比较2个日期间隔的示例代码
Apr 15 Javascript
javascript中var的重要性分析
Feb 11 Javascript
jquery插件格式实例分析
Jun 16 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
微信小程序实现消息框弹出动画
Apr 18 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 Javascript
jQuery实现验证用户登录
Dec 10 jQuery
JS快速实现简单计算器
Apr 08 Javascript
jQuery实现产品对比功能附源码下载
Aug 09 #Javascript
AngularJS利用Controller完成URL跳转
Aug 09 #Javascript
JavaScript实现广告弹窗效果
Aug 09 #Javascript
谈谈JavaScript中的几种借用方法
Aug 09 #Javascript
Backbone View 之间通信的三种方式
Aug 09 #Javascript
Backbone中View之间传值的学习心得
Aug 09 #Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 #Javascript
You might like
PHP HTML代码串 截取实现代码
2009/06/29 PHP
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python将阿拉伯数字转换为罗马数字的方法
2015/07/10 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
节约电力资源的建议书
2014/03/12 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
秋季运动会加油词
2015/07/18 职场文书
团委副书记工作总结
2015/08/14 职场文书
护理心得体会范文
2016/01/22 职场文书
《穷人》教学反思
2016/02/19 职场文书