Ajax(Asynchronous JavaScript and XML)說(shuō)到底就是一種瀏覽器異步讀取服務(wù)器上XML內(nèi)容的技術(shù)?,F(xiàn)在的技術(shù)凡是跟XML扯上關(guān)系,再加上個(gè)概念做幌子,,就像金裝了一樣,,拽得不行。門外的人看得很是熱鬧,,門里的人搖搖頭不外如是,。XML呢,跨平臺(tái)的新潮語(yǔ)言,?其實(shí)XML=TXT,。XML只是符合很多規(guī)范的文本。它本身什么都不是,,只是保存字符的文件,。而瀏覽器異步讀取的只是服務(wù)器上的文本內(nèi)容,所以在Ajax開發(fā)時(shí)完全不必拘泥于XML,。本文介紹了JSON的基本原理,、JSON的構(gòu)造格式,在文末比較了XML與JSON的優(yōu)缺點(diǎn) 版權(quán)所有,,轉(zhuǎn)載請(qǐng)注明,,來(lái)自www.
XML 的作用是格式化數(shù)據(jù)內(nèi)容。如果我們不用XML還有什么更好的方法嗎,?這個(gè)答案是JSON,。介紹JSON之前我先介紹一下JavaScript這門腳本語(yǔ) 言。腳本語(yǔ)言自身有動(dòng)態(tài)執(zhí)行的天賦,。即我們可以把想要執(zhí)行的語(yǔ)句放在字符串里,,通過(guò)eval()這個(gè)動(dòng)態(tài)執(zhí)行函數(shù)來(lái)執(zhí)行。字符串里的內(nèi)容會(huì)像我們寫的腳本 一樣被執(zhí)行,。 示例1: <HTML>
<HEAD> <TITLE>eval example 1</TITLE> </HEAD> <BODY> <script> str = "alert(‘hello‘)"; eval(str); </script> </BODY> </HTML> 打開頁(yè)面會(huì)彈出hello窗口,。 我們可以在字符串中放任何腳本語(yǔ)句,包括聲明語(yǔ)句: <HTML>
<HEAD> <TITLE>eval example 2</TITLE> </HEAD> <BODY> <script> define = "{name:‘Michael‘,email:‘17bity@gmail.com‘}"; eval("data = "+define); alert("name:"+data.name); alert("email:"+data.email); </script> </BODY> </HTML> 如果我們?cè)诤笈_(tái)異步傳來(lái)的文本是JavaScript的聲明語(yǔ)句,,那么不是一條eval方法就能解析了,?對(duì)于解析復(fù)雜的XML,這樣的效率是多么大的提高??! 現(xiàn)在就來(lái)告訴你什么是JSON:JavaScript Object Notation。我更愿意把它翻譯為JavaScript對(duì)象聲明,。比如要從后臺(tái)載入一些通訊錄的信息,,如果寫成XML,如下: <contact>
<friend> <name>Michael</name> <email>17bity@gmail.com</email> <homepage>http://www.</homepage> </friend> <friend> <name>John</name> <email>john@gmail.com</email> <homepage>http://www.</homepage> </friend> <friend> <name>Peggy</name> <email>peggy@gmail.com</email> <homepage>http://www.</homepage> </friend> </contact> 而寫成JSON呢: [
{ name:"Michael", email:"17bity@gmail.com", homepage:"http://www." }, { name:"John", email:"john@gmail.com", homepage:"http://www." }, { name:"Peggy", email:"peggy@gmail.com", homepage:"http://www." } ] 簡(jiǎn) 單的不只是表達(dá)上,,最重要的是可以丟棄讓人暈頭轉(zhuǎn)向的DOM解析了,。因?yàn)橹灰螶avaScript的聲明規(guī)范,,JavaScrip會(huì)自動(dòng)幫你解析好 的,。Ajax中使用JSON的基本方法是前臺(tái)載入后臺(tái)聲明JavaScript對(duì)象的字符串,用eval方法來(lái)將它轉(zhuǎn)為實(shí)際的對(duì)象,,最后通過(guò) DHTML更新頁(yè)面信息,。
JSON的基本格式如下,圖片來(lái)自: 對(duì)象是屬性,、值對(duì)的集合,。一個(gè)對(duì)象的開始于"{",結(jié)束于"}",。每一個(gè)屬性名和值間用":"提示,,屬性間用","分隔。 ![]() 數(shù)組是有順序的值的集合,。一個(gè)數(shù)組開始于"[",,結(jié)束于"]",值之間用","分隔,。 ![]() 值可以是引號(hào)里的字符串,、數(shù)字、true、false,、null,,也可以是對(duì)象或數(shù)組。這些結(jié)構(gòu)都能嵌套,。 ![]() 字符串的定義和C或Java基本一致,。 ![]() 數(shù)字的定義也和C或Java基本一致。 ![]()
可讀性 JSON和XML的可讀性可謂不相上下,,一邊是建議的語(yǔ)法,,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù),。 可擴(kuò)展性 XML天生有很好的擴(kuò)展性,,JSON當(dāng)然也有,沒有什么是XML能擴(kuò)展,,JSON不能的,。 編碼難度 XML有豐富的編碼工具,比如Dom4j,、JDom等,,JSON也有提供的工具,但是JSON的編碼明顯比XML容易許多,,即使不借助工具也能寫出JSON的代碼,,可是要寫好XML就不太容易了。 解碼難度 XML的解析得考慮子節(jié)點(diǎn)父節(jié)點(diǎn),,讓人頭昏眼花,,而JSON的解析難度幾乎為0。這一點(diǎn)XML輸?shù)恼媸菦]話說(shuō),。 流行度 XML已經(jīng)被業(yè)界廣泛的使用,,而JSON才剛剛開始,但是在Ajax這個(gè)特定的領(lǐng)域,,未來(lái)的發(fā)展一定是XML讓位于JSON,。到時(shí)Ajax應(yīng)該變成Ajaj(Asynchronous JavaScript and JSON)了。 [版權(quán)所有,,www.] 附: JSON.org : http://www./ JSON in JavaScript : http://www./js.html JSON: The Fat-Free Alternative to XML : http://www./xml.html JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript: http://www./pub/a/2005/12/21/json-dynamic-script-tag.html Using JSON (JavaScript Object Notation) with Yahoo! Web Services: http://developer.yahoo.com/common/json.html |
|
來(lái)自: nbtymm > 《Ajax技術(shù)》