首頁 > web前端 > js教程 > 主體

jQuery內建的AJAX功能和JSON的使用實例_jquery

WBOY
發布: 2016-05-16 16:41:08
原創
1554 人瀏覽過

透過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&#63;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程式碼如下:




test1








<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>
LOADING....
登入後複製

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資料格式傳回來就完了,不過後台用了一些分頁和快取的方法,希望對初學者有一些幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板