資源描述:
《ajax-使用json向服務(wù)器發(fā)送數(shù)據(jù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Ajax-使用JSON向服務(wù)器發(fā)送數(shù)據(jù)使用JSON向服務(wù)器發(fā)送數(shù)據(jù)做了這么多,你已經(jīng)能更順手地使用JavaScript了,也許在考慮把更多的模型信息放在瀏覽器上。不過,看過前面的例子后(使用XML向服務(wù)器發(fā)送復(fù)雜的數(shù)據(jù)結(jié)構(gòu)),你可能會改變主意。通過串連接來創(chuàng)建XML串并不好,這也不是用來生成或修改XML數(shù)據(jù)結(jié)構(gòu)的健壯技術(shù)。JSON概述XML的一個替代方法是JSON,可以在www.json.org找到。JSON是一種文本格式,它獨立于具體語言,但是使用了與C系列語言(如C、C#、JavaScript等)類似的
2、約定。JSON建立在以下兩種數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上,當(dāng)前幾乎所有編程語言都支持這兩種數(shù)據(jù)結(jié)構(gòu):l???名/值對集合。在當(dāng)前編程語言中,這實現(xiàn)為一個對象、記錄或字典。l???值的有序表,這通常實現(xiàn)為一個數(shù)組。因為這些結(jié)構(gòu)得到了如此眾多編程語言的支持,所以JSON是一個理想的選擇,可以作為異構(gòu)系統(tǒng)之間的一種數(shù)據(jù)互換格式。另外,由于JSON是基于標(biāo)準(zhǔn)JavaScript的子集,所以在所有當(dāng)前Web瀏覽器上都應(yīng)該是兼容的。JSON對象是名/值對的無序集合。對象以{開始,以}結(jié)束,名/值對用冒號分隔。JSON數(shù)組是一個有序的
3、值集合,以[開始,以]結(jié)束,數(shù)組中的值用逗號分隔。值可以是串(用雙引號引起)、數(shù)值、true或false、對象,或者是數(shù)組,因此結(jié)構(gòu)可以嵌套。圖3-6以圖形方式很好地描述了JSON對象的標(biāo)記。圖3-6?JSON對象結(jié)構(gòu)的圖形化表示(摘自www.json.org)請考慮employee對象的簡單例子。employee對象可能包含名、姓、員工號和職位等數(shù)據(jù)。使用JSON,可以如下表示employee對象實例:varemployee={???"firstName":John???,"lastName":Doe??
4、?,"employeeNumber":123???,"title":"Accountant"}然后可以使用標(biāo)準(zhǔn)點記法使用對象的屬性,如下所示:varlastName=employee.lastName;??//Accessthelastnamevartitle=employee.title;???????????//Accessthetitleemployee.employeeNumber=456;????//ChangetheemployeenumberJSON有一點很引以為豪,這就是它是一個輕量級的數(shù)據(jù)
5、互換格式。如果用XML來描述同樣的employee對象,可能如下所示:???John???Doe???123???Accountant顯然,JSON編碼比XML編碼簡短。JSON編碼比較小,所以如果在網(wǎng)絡(luò)上發(fā)送大量數(shù)據(jù),可能會帶來顯著的性能差異。www.json.org網(wǎng)站列出了至少與
6、其他編程語言的14種綁定,這說明,不論在服務(wù)器端使用何種技術(shù),都能通過JSON與瀏覽器通信。使用JSON的示例(此例子需要json.js,http://www.json.org/js.html最下面的鏈接點擊下載,此例子使用的是比較老版本的json.js,如果你下載的是新的,使用的方法就不同了;JSONObject.java,JSONArray.java,http://www.json.org/java/index.html下載,注意不是javaJSON-lib雖然里面也有這兩個類,可能是版本原因不同了如果
7、你要用json-lib,那你就必須下載json-lib-2.0-jdk15.jar,還必需下面5個jarjakartacommons-lang,jakartacommons-beanutils,jakartacommons-collectionsjakartacommons-logging,ezmorph?缺少任何一個都是不行的,試過了--?。∏懊?個在apache.org下載,最后一個在http://ezmorph.sourceforge.net/下載下面紅色字體都是分歧部分,就看你是用什么了,經(jīng)本人測試
8、沒問題。)下面是一個簡單的例子,展示了如何使用JSON將JavaScript對象轉(zhuǎn)換為串格式,并使用Ajax技術(shù)將這個串發(fā)送到服務(wù)器,然后服務(wù)器根據(jù)這個串創(chuàng)建一個對象。這個例子中沒有業(yè)務(wù)邏輯,也幾乎沒有用戶交互,它強調(diào)的是客戶端和服務(wù)器端的JSON技術(shù)。圖3-7顯示了一個“字符串化的”Car對象。圖3-7?“字符串化的”Car對象因為這個例子幾乎與前面的POST例子完全相同,所以我們只關(guān)注JSON特定的技術(shù)。點擊