jQuery內(nèi)置的AJAX功能和JSON的使用實(shí)例
通過(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+"> 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> <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> 客戶(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轉(zhuǎn)化成JSON數(shù)據(jù)格式傳回來(lái)就完了,不過(guò)后臺(tái)用了一些分頁(yè)和緩存的方法,希望對(duì)初學(xué)者有一些幫助。
- [js]輕便的XMLHttpRequest應(yīng)用函數(shù):downloadUrl()
- JSP XMLHttpRequest動(dòng)態(tài)無(wú)刷新及其中文亂碼處理
- Javascript+XMLHttpRequest+asp.net無(wú)刷新讀取數(shù)據(jù)庫(kù)數(shù)據(jù)
- javascript對(duì)XMLHttpRequest異步請(qǐng)求的面向?qū)ο蠓庋b
- Jquery Ajax 學(xué)習(xí)實(shí)例2 向頁(yè)面發(fā)出請(qǐng)求 返回JSon格式數(shù)據(jù)
- javascript XMLHttpRequest對(duì)象全面剖析
- js判斷IE6/IE7/FF的代碼[XMLHttpRequest]
- js/ajax跨越訪(fǎng)問(wèn)-jsonp的原理和實(shí)例(javascript和jquery實(shí)現(xiàn)代碼)
- jquery ajax jsonp跨域調(diào)用實(shí)例代碼
- JQuery處理json與ajax返回JSON實(shí)例代碼
- asp.net中利用Jquery+Ajax+Json實(shí)現(xiàn)無(wú)刷新分頁(yè)的實(shí)例代碼
- javascript創(chuàng)建createXmlHttpRequest對(duì)象示例代碼
- jquery的ajax異步請(qǐng)求接收返回json數(shù)據(jù)實(shí)例
- jQuery+ajax中g(shù)etJSON() 用法實(shí)例
- JavaScript原生xmlHttp與jquery的ajax方法json數(shù)據(jù)格式實(shí)例
相關(guān)文章
jQuery.ajax實(shí)現(xiàn)根據(jù)不同的Content-Type做出不同的響應(yīng)
使用H5+ASP.NET General Handler開(kāi)發(fā)項(xiàng)目,使用ajax進(jìn)行前后端的通訊。有一個(gè)場(chǎng)景需求是根據(jù)服務(wù)器返回的不同數(shù)據(jù)類(lèi)型,前端進(jìn)行不同的響應(yīng),這里記錄下如何使用$.ajax實(shí)現(xiàn)該需求,需要的朋友可以參考下2016-11-11
JQuery中DOM加載與事件執(zhí)行實(shí)例分析
這篇文章主要介紹了JQuery中DOM加載與事件執(zhí)行,實(shí)例分析了jQuery中DOM加載及事件執(zhí)行的原理與實(shí)現(xiàn)方法,并補(bǔ)充說(shuō)明了windows.onload方法和$(document).ready()方法的區(qū)別,需要的朋友可以參考下2015-06-06
jQuery內(nèi)容折疊效果插件用法實(shí)例分析(附demo源碼)
這篇文章主要介紹了jQuery內(nèi)容折疊效果插件用法,結(jié)合實(shí)例形式分析了jQuery展開(kāi)折疊插件jquery.coolfieldset.js的具體使用技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2016-04-04
jquery插件hiAlert實(shí)現(xiàn)網(wǎng)頁(yè)對(duì)話(huà)框美化
hiAlert是一款基于jQuery的信息提示插件,它支持操作成功、操作失敗和操作提醒三種信息提示方式。hiAlert瀏覽器兼容性非常好,支持更改提示內(nèi)容,支持定位提示框的位置,可配置插件參數(shù)。2015-05-05
JQuery在循環(huán)中綁定事件的問(wèn)題詳解
下面小編就為大家?guī)?lái)一篇JQuery在循環(huán)中綁定事件的問(wèn)題詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
使用jquery模擬a標(biāo)簽的click事件無(wú)法實(shí)現(xiàn)跳轉(zhuǎn)的解決
這篇文章主要給大家介紹了關(guān)于使用jquery模擬a標(biāo)簽的click事件無(wú)法實(shí)現(xiàn)跳轉(zhuǎn)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
jquery利用json實(shí)現(xiàn)頁(yè)面之間傳值的實(shí)例解析
本文主要介紹了jquery利用json實(shí)現(xiàn)頁(yè)面之間傳值的方法,具有很好的參考價(jià)值,需要的朋友可以看下2016-12-12
jQuery實(shí)現(xiàn)的進(jìn)度條效果
本文主要給大家介紹的是jQuery實(shí)現(xiàn)的進(jìn)度效果的實(shí)例代碼,其實(shí)現(xiàn)原理就是使用 Javascript 控制 SPAN CSS 的寬度(以及其他的樣式)有需要的小伙伴可以參考下。2015-07-07

