Ajax是“異步JavaScript和XML”的縮寫已經眾所周知,然而雖然XML是看上去的重要組成部分,它卻不是必須的。今天看到一篇國外Blog提到JSON的說法,全稱是JavaScript Object Notation,意思是直接使用Ajax對象來傳遞信息,可以讀作“Jason”。在這里我就簡單的介紹一下,JSON概念很簡單,就是服務器直接生成 JavaScript語句,客戶端獲取后直接用eval方法來獲得這個對象,這樣就可以省去解析XML的性能損失。比如傳遞Blog評論的示例:
使用XML表示:
<comments>
<comment>
<id>1</id>
<author>someone1</author>
<url>http://someone1.x2design.net</url>
<content>hello</content>
</comment>
<comment>
<id>2</id>
<author>someone2</author>
<url>http://someone2.x2design.net</url>
<content>someone1</content>
</comment>
<comment>
<id>3</id>
<author>someone3</author>
<url>http://someone3.x2design.net</url>
<content>hello</content>
</comment>
</comments>
使用JSON:
{comments:[
{
id:1,
author:"someone1",
url:"http://someone1.x2design.net",
content:"hello"
},
{
id:2,
author:"someone2",
url:"http://someone2.x2design.net",
content:"hello"
},
{
id:3,
author:"someone3",
url:"http://someone3.x2design.net",
content:"hello"
}
]};
很容易發(fā)現,使用JSON不僅減少了解析XML解析帶來的性能問題和兼容性問題,而且對于JavaScript來說非常容易使用,可以方便的通過遍歷數組以及訪問對象屬性來獲取數據,其可讀性也不錯,基本具備了結構化數據的性質。不得不說是一個很好的辦法,而且事實上google maps就沒有采用XML傳遞數據,而是采用了JSON方案。
JSON的另外一個優(yōu)勢是跨域可行性,例如你在www.xxx.com的網頁里使用<script type="text/javascript" src="http://www.yyy.com/some.js"></script>是完全可行的,這就意味著你可以跨域傳遞信息。而使用XMLHttpRequest卻獲取不了跨域的信息,這是JavaScript內部的安全性質所限制的。
JSON看上去很美,是不是就能完全取代XML呢?事實并非如此,而原因就在于XML的優(yōu)勢:通用性。要使服務器端產生語法合格的JavaScript代碼并不是很容易做到的,這主要發(fā)生在比較龐大的系統(tǒng),服務器端和客戶端有不同的開發(fā)人員。它們必須協(xié)商對象的格式,這很容易造成錯誤。
無論如何,JSON是一個誘人的技術,準備在X2Blog做一個大量的試用。希望屆時可以獲取大的性能提高。