筆者對JSON對象代碼進行說明介紹
這里考慮都考慮的是服務(wù)器返回的是JSON形式的字符串的形式,對于利用JSONObject等插件封裝的JSON對象,與此亦是大同小異,這里不再做說明,下面進行JSON對象代碼說明:
- <!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">
- 客戶ID
- </span>
- <span id="EmployeeID">
- 雇員ID
- </span>/
- <span id="OrderDate">
- 訂購日期
- </span>/
- <span id="ShippedDate">
- 發(fā)貨日期
- </span>/
- <span id="ShippedName">
- 貨主名稱
- </span>/
- <span id="ShippedAddress">
- 貨主地址
- </span>/
- <span id="ShippedCity">
- 貨主城市
- </span>/
- <span id="more">
注:對于一般的js生成json對象,只需要將$.each()方法替換為for語句即可,其他不變。 對于服務(wù)器返回的JSON字符串,如果jquery異步請求將type(一般為這個配置屬性)設(shè)為“json”,或者利用$.getJSON()方法獲得服務(wù)器返回,那么就不需要eval()方法了。#t#
因為這時候得到的結(jié)果已經(jīng)是json對象了,只需直接調(diào)用該對象即可,這里以$.getJSON方法為例說明數(shù)據(jù)處理方法:
- type: "get",//使用get方法訪問后臺
- dataType: "json",//返回json格式的數(shù)據(jù)
- url: "Handler.ashx",//要訪問的后臺地址
- data: "pageIndex=" + pageIndex,//要發(fā)送的數(shù)據(jù)
- complete :function(){$("#load").hide();},//AJAX請求完成時隱藏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()方法是動態(tài)執(zhí)行其中字符串(可能是js腳本)的,這樣很容易會造成系統(tǒng)的安全問題。所以可以采用一些規(guī)避了eval()的第三方客戶端腳本庫,比如JSON對象就提供了一個不超過3k的腳本庫。