成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

為什么是 JSONP

iKcamp / 2835人閱讀

摘要:因?yàn)橛型床呗?,而在?shí)際開(kāi)發(fā)中又常常會(huì)有跨域的需求,早期開(kāi)發(fā)者為了解決跨域問(wèn)題而搞出來(lái)這樣一個(gè)頗為奇怪的東西。安全早期的瀏覽器處于安全層面的考量,制定同源策略,限制了一個(gè)源中加載文本或腳本與來(lái)自其它源中資源的交互方式。

AJAX、JSON、JSONP

在 WEB 開(kāi)發(fā)中,經(jīng)常見(jiàn)到諸如 AJAX、JSON、JSONP 這些名詞。三者看起來(lái)很像,很多同學(xué)尤其是沒(méi)有系統(tǒng)了解過(guò)前端技術(shù)體系的同學(xué),平常只是借助類似 JQuery 這類庫(kù)封裝好的函數(shù)使用而已,并不了解其原理。但這三種東西具體是什么,有什么關(guān)系和區(qū)別卻常常說(shuō)不清楚。

接下來(lái),會(huì)簡(jiǎn)要介紹一下三者的的含義,重點(diǎn)闡述 JSONP 的來(lái)源和原理,以及為什么 JSONP 不是 AJAX。

AJAX (Asynchronous JavaScript + XML)

Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:

standards-based presentation using XHTML and CSS;

dynamic display and interaction using the Document Object Model;

data interchange and manipulation using XML and XSLT;

asynchronous data retrieval using XMLHttpRequest;

and JavaScript binding everything together.

異步 JavaScript + XML,是在 2005 年由 Jesse James Garrett 提出的一個(gè)術(shù)語(yǔ)。 AJAX 并非特指某種技術(shù), 描述的是一種結(jié)合使用大量已有技術(shù)的方式, 包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 還有最重要的 XMLHttpRequest 對(duì)象.

盡管在 AJAX 中 X 代表 XML, 但現(xiàn)在更多的在使用 JSON,因?yàn)?JSON 具有很多優(yōu)勢(shì),比如更輕量并且是 JavaScript 的一部分。在 AJAX 模型中 JSON 和 XML 都用于承載信息.

JSON(Javascript Object Notation)

JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式。由道格拉斯·克羅克福特(Douglas Crockford)在 2012 年發(fā)明,并逐漸取代 XML 成為事實(shí)上的數(shù)據(jù)交換格式標(biāo)準(zhǔn)。

JSON 基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。但采用完全獨(dú)立于語(yǔ)言的文本格式,并使用了類似于 C 語(yǔ)言家族的習(xí)慣。

在 JSON 中,一共 6 種數(shù)據(jù)類型:

number:跟 Javascript 的數(shù)值一致,除去未曾使用的八進(jìn)制與十六進(jìn)制格式,和一些編碼細(xì)節(jié)

boolean:truefalse

string:是由雙引號(hào)包圍的任意數(shù)量Unicode字符的集合,使用反斜線轉(zhuǎn)義

null:null

array:數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以“[”(左中括號(hào))開(kāi)始,“]”(右中括號(hào))結(jié)束,值之間使用“,”(逗號(hào))分隔

object:對(duì)象是一個(gè)無(wú)序的“‘名稱/值’對(duì)”集合。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束,每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值’ 對(duì)”之間使用“,”(逗號(hào))分隔

以及上面的任意組合。

在 JavaScript 中有一個(gè)全局對(duì)象 JSON,包含兩個(gè)方法 JSON.stringify()JSON.parse(),用于序列化和解析 JSON。

當(dāng)然也有人使用 eval("(" + string + ")") 代替 JSON.parse() 來(lái) 解析JSON,相比而言這種方式的容錯(cuò)性更高。

JSONP(JSON with Padding)

因?yàn)?XMLHttpRequest 有同源策略,而在實(shí)際開(kāi)發(fā)中又常常會(huì)有跨域的需求,早期開(kāi)發(fā)者為了解決跨域問(wèn)題而搞出來(lái)這樣一個(gè)頗為奇怪的東西。產(chǎn)生原因和名字一樣古怪,光聽(tīng)名字恐怕沒(méi)幾個(gè)人知道說(shuō)的是個(gè)什么東西。

剛好

閱讀需要支付1元查看
<