Ajax:擁抱JSON,讓XML走開

來源:互聯網
上載者:User

Ajax(Asynchronous javascript and XML)說到底就是一種瀏覽器非同步讀取伺服器上XML內容的技術。現在的技術凡是跟XML扯上關係,再加上個概念做幌子,就像金裝了一樣,拽得不行。門外 的人看得很是熱鬧,門裡的人搖搖頭不外如是。XML呢,跨平台的新潮語言?其實XML=TXT。XML只是符合很多規範的文本。它本身什麼都不是,只是保 存字元的檔案。而瀏覽器非同步讀取的只是伺服器上的常值內容,所以在Ajax開發時完全不必拘泥於XML。[著作權,www.jialing.net]

JSON的來曆

XML 的作用是格式化資料內容。如果我們不用XML還有什麼更好的方法嗎?這個答案是JSON。介紹JSON之前我先介紹一下JavaScript這門指令碼語 言。指令碼語言自身有動態執行的天賦。即我們可以把想要執行的語句放在字串裡,通過eval()這個動態執行函數來執行。字串裡的內容會像我們寫的指令碼 一樣被執行。

樣本1:

<HTML>
<HEAD>
<TITLE>eval example 1</TITLE>
</HEAD>
<BODY>
<script>
str = "alert('hello')";
eval(str);
</script>
</BODY>
</HTML> 

開啟頁面會彈出hello視窗。

我們可以在字串中放任何指令碼語句,包括聲明語句:

<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>

如果我們在後台非同步傳來的文本是JavaScript的聲明語句,那麼不是一條eval方法就能解析了?對於解析複雜的XML,這樣的效率是多麼大的提高啊!

現在就來告訴你什麼是JSON:JavaScript Object Notation。我更願意把它翻譯為JavaScript對象聲明。比如要從後台載入一些通訊錄的資訊,如果寫成XML,如下:

<contact>
<friend>
<name>Michael</name>
<email>17bity@gmail.com</email>
<homepage>http://www.jialing.net</homepage>
</friend>
<friend>
<name>John</name>
<email>john@gmail.com</email>
<homepage>http://www.john.com</homepage>
</friend>
<friend>
<name>Peggy</name>
<email>peggy@gmail.com</email>
<homepage>http://www.peggy.com</homepage>
</friend>
</contact>

而寫成JSON呢:

[
{
name:"Michael",
email:"17bity@gmail.com",
homepage:"http://www.jialing.net"
},
{
name: "John",
email: "john@gmail.com",
homepage: "http://www.jobn.com"
},
{
name: "Peggy",
email: "peggy@gmail.com",
homepage: "http://www.peggy.com"
}
]

簡單的不只是表達上,最重要的是可以丟棄讓人暈頭轉向的DOM解析了。因為只要符合JavaScript的聲明規範,JavaScrip會自動幫你解析好 的。Ajax中使用JSON的基本方法是前台載入後台聲明JavaScript對象的字串,用eval方法來將它轉為實際的對象,最後通過 DHTML更新頁面資訊。
JSON的格式

JSON的基本格式如下,圖片來自json.org:

·對象是屬性、值對的集合。一個對象的開始於"{",結束於"}"。每一個屬性名稱和值間用":"提示,屬性間用","分隔。

·數組是有順序的值的集合。一個數組開始於"[",結束於"]",值之間用","分隔。


·值可以是引號裡的字串、數字、true、false、null,也可以是對象或數組。這些結構都能嵌套。


·字串的定義和C或Java基本一致。


·數位定義也和C或Java基本一致。

JSON VS XML

·可讀性

JSON和XML的可讀性可謂不相上下,一邊是建議的文法,一邊是規範的標籤形式,很難分出勝負。

·可擴充性

XML天生有很好的擴充性,JSON當然也有,沒有什麼是XML能擴充,JSON不能的。

·編碼難度

XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不藉助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。

·解碼難度

XML的解析得考慮子節點父節點,讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點XML輸的真是沒話說。

·流行度

XML已經被業界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域,未來的發展一定是XML讓位於JSON。到時Ajax應該變成Ajaj(Asynchronous JavaScript and JSON)了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.