最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于jQuery的AJAX和JSON實(shí)現(xiàn)純html數(shù)據(jù)模板

 更新時(shí)間:2016年08月09日 14:16:04   作者:加菲貓  
jQuery內(nèi)置的AJAX功能,直接訪(fǎng)問(wèn)后臺(tái)獲得JSON格式的數(shù)據(jù),從而實(shí)現(xiàn)純html數(shù)據(jù)模板,下面主要給大家介紹實(shí)現(xiàn)代碼,感興趣的朋友一起看下吧

通過(guò)jQuery內(nèi)置的AJAX功能,直接訪(fǎng)問(wèn)后臺(tái)獲得JSON格式的數(shù)據(jù),然后通過(guò)jQuer把數(shù)據(jù)綁定到事先設(shè)計(jì)好的html模板上,直接在頁(yè)面上顯示。

我們先來(lái)看一下html模板:

<table id="datas" border="1" cellspacing="0" style="border-collapse: collapse">
<tr>
<th>
訂單ID</th>
<th>
客戶(hù)ID</th>
<th>
雇員ID</th>
<th>
訂購(gòu)日期</th>
<th>
發(fā)貨日期</th>
<th>
貨主名稱(chēng)</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屬性,這個(gè)是一個(gè)關(guān)鍵。再來(lái)看一下AJAX請(qǐng)求和綁定數(shù)據(jù)的代碼。

$.ajax({
type: "get",//使用get方法訪(fǎng)問(wèn)后臺(tái)
dataType: "json",//返回json格式的數(shù)據(jù)
url: "BackHandler.ashx",//要訪(fǎng)問(wèn)的后臺(tái)地址
data: "pageIndex=" + pageIndex,//要發(fā)送的數(shù)據(jù)
complete :function(){$("#load").hide();},//AJAX請(qǐng)求完成時(shí)隱藏loading提示
success: function(msg){//msg為返回的數(shù)據(jù),在這里做數(shù)據(jù)綁定
var data = msg.table;
$.each(data, function(i, n){
var row = $("#template").clone();
row.find("#OrderID").text(n.訂單ID);
row.find("#CustomerID").text(n.客戶(hù)ID);
row.find("#EmployeeID").text(n.雇員ID);
row.find("#OrderDate").text(ChangeDate(n.訂購(gòu)日期));
if(n.發(fā)貨日期!== undefined) row.find("#ShippedDate").text(ChangeDate(n.發(fā)貨日期));
row.find("#ShippedName").text(n.貨主名稱(chēng));
row.find("#ShippedAddress").text(n.貨主地址);
row.find("#ShippedCity").text(n.貨主城市);
row.find("#more").html("<a href=OrderInfo.aspx?id=" + n.訂單ID + "&pageindex="+pageIndex+">&nbsp;More</a>"); 
row.attr("id","ready");//改變綁定好數(shù)據(jù)的行的id
row.appendTo("#datas");//添加到模板的容器中
});

這個(gè)是jQuery的AJAX方法,返回?cái)?shù)據(jù)并不復(fù)雜,主要說(shuō)明一下怎么把數(shù)據(jù)按模板的定義顯示到到頁(yè)面上。首先是這個(gè)“var row = $(“#template”).clone();”先把模板復(fù)制一份,接下來(lái)row.find(“#OrderID”).text(n.訂單ID);,表示找到id=OrderID的標(biāo)記,設(shè)置它的innerText為相應(yīng)的數(shù)據(jù),當(dāng)然也可以設(shè)置為html格式的數(shù)據(jù)。或者是通過(guò)外部的函數(shù)把數(shù)據(jù)轉(zhuǎn)換成需要的格式,比如這里row.find(“#OrderDate”).text(ChangeDate(n.訂購(gòu)日期));有點(diǎn)服務(wù)器控件做模板綁定數(shù)據(jù)的感覺(jué)。

所有的這些,都是放在一個(gè)靜態(tài)的頁(yè)面里,只通過(guò)AJAX方法從后臺(tái)獲取數(shù)據(jù),所有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>
&nbsp;<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=" >> " />
&nbsp;<span id="pageinfo"></span>
<table id="datas" border="1" cellspacing="0" style="border-collapse: collapse">
<tr>
<th>
訂單ID</th>
<th>
客戶(hù)ID</th>
<th>
雇員ID</th>
<th>
訂購(gòu)日期</th>
<th>
發(fā)貨日期</th>
<th>
貨主名稱(chēng)</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請(qǐng)求和綁定數(shù)據(jù)代碼的js,整個(gè)頁(yè)面連form都不用,這樣做有什么好處呢。再看下面一個(gè)模板

<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屬性。大家看到這里應(yīng)該明白了,不管用什么樣的表現(xiàn)形式,只要id屬性相同,就可以把數(shù)據(jù)綁定到對(duì)應(yīng)的位置。這樣的話(huà),我們這些做程序的就不會(huì)因?yàn)槊拦さ男薷亩薷拇a了,而且美工也只要做出html就可以了,不需要為服務(wù)器控件做模板(不過(guò)我還沒(méi)遇到過(guò)這樣的美工,都是美工設(shè)計(jì)好了我來(lái)改成服務(wù)器控件的模板)。

再簡(jiǎn)單說(shuō)一下AJAX請(qǐng)求的后臺(tái),用的是Access的Northwind數(shù)據(jù)庫(kù),把訂單表放到DataTable里,然后通過(guò)DataTable2JSON(www.baidu.com)轉(zhuǎn)化成JSON數(shù)據(jù)格式傳回來(lái)就完了,不過(guò)后臺(tái)用了一些分頁(yè)和緩存的方法,希望對(duì)初學(xué)者有一些幫助。

test.htm

這里寫(xiě)圖片描述

這里寫(xiě)圖片描述

相關(guān)文章

最新評(píng)論

阿合奇县| 吉首市| 旺苍县| 申扎县| 旌德县| 永康市| 岱山县| 五台县| 多伦县| 呼图壁县| 洛浦县| 阿坝| 丹寨县| 商丘市| 济源市| 江永县| 南召县| 沽源县| 汕头市| 孙吴县| 文化| 吴川市| 高青县| 高密市| 行唐县| 通许县| 井陉县| 会同县| 博野县| 正阳县| 潼关县| 大洼县| 郑州市| 泸定县| 和平区| 大渡口区| 卢氏县| 河津市| 灵山县| 庄河市| 亳州市|