筆者對(duì)JSON對(duì)象代碼進(jìn)行說(shuō)明介紹
這里考慮都考慮的是服務(wù)器返回的是JSON形式的字符串的形式,對(duì)于利用JSONObject等插件封裝的JSON對(duì)象,與此亦是大同小異,這里不再做說(shuō)明,下面進(jìn)行JSON對(duì)象代碼說(shuō)明:
- <!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>test2</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>
- <ul id="datas">
- <li id="template">
- <span id="OrderID">
- 訂單ID
- </span>/
- <span id="CustomerID">
- 客戶(hù)ID
- </span>
- <span id="EmployeeID">
- 雇員ID
- </span>/
- <span id="OrderDate">
- 訂購(gòu)日期
- </span>/
- <span id="ShippedDate">
- 發(fā)貨日期
- </span>/
- <span id="ShippedName">
- 貨主名稱(chēng)
- </span>/
- <span id="ShippedAddress">
- 貨主地址
- </span>/
- <span id="ShippedCity">
- 貨主城市
- </span>/
- <span id="more">
注:對(duì)于一般的js生成json對(duì)象,只需要將$.each()方法替換為for語(yǔ)句即可,其他不變。 對(duì)于服務(wù)器返回的JSON字符串,如果jquery異步請(qǐng)求將type(一般為這個(gè)配置屬性)設(shè)為“json”,或者利用$.getJSON()方法獲得服務(wù)器返回,那么就不需要eval()方法了。#t#
因?yàn)檫@時(shí)候得到的結(jié)果已經(jīng)是json對(duì)象了,只需直接調(diào)用該對(duì)象即可,這里以$.getJSON方法為例說(shuō)明數(shù)據(jù)處理方法:
- type: "get",//使用get方法訪問(wèn)后臺(tái)
- dataType: "json",//返回json格式的數(shù)據(jù)
- url: "Handler.ashx",//要訪問(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.OrderID);
- row.find("#CustomerID").text(n.CustomerID);
- row.find("#EmployeeID").text(n.EmployeeID);
- row.find("#OrderDate").text(ChangeDate(n.OrderDate));
- if(n.RequiredDate !== undefined) row.find("#ShippedDate").text(ChangeDate(n.RequiredDate));
- row.find("#ShippedName").text(n.ShipName);
- row.find("#ShippedAddress").text(n.ShipAddress);
- row.find("#ShippedCity").text(n.ShipCity);
- row.find("#more").html("<a href=OrderInfo.aspx?id=" + n.OrderID + "&pageindex="+pageIndex+"> More</a>");
- row.attr("id","ready");//改變綁定好數(shù)據(jù)的行的id
- row.appendTo("#datas");//添加到模板的容器中
- });
- $("[@id=ready]").show();
- SetPageInfo();
- }
- });
- }
- function ChangeDate(date)
- {
- return date.replace("-","/").replace("-","/");
- }
這里特別需要注意的是方式1中的eval()方法是動(dòng)態(tài)執(zhí)行其中字符串(可能是js腳本)的,這樣很容易會(huì)造成系統(tǒng)的安全問(wèn)題。所以可以采用一些規(guī)避了eval()的第三方客戶(hù)端腳本庫(kù),比如JSON對(duì)象就提供了一個(gè)不超過(guò)3k的腳本庫(kù)。

















