日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Ajax和WEB服務(wù)數(shù)據(jù)格式:JSONJSONP

在之前的文章中我們講到了早期的集中數(shù)據(jù)格式,XML,SOAP,HTML?,F(xiàn)在,我們來看看JSON和JSONP。

創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團(tuán)隊(duì)十載專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。

JSON

JSON(JavaScript Object Notation)是Douglas Crockford提出的。他是一個(gè)輕量級(jí)的數(shù)據(jù)交換格式,基于JavaScript對(duì)象字面量。

我們可以將之前的XML圖書格式的文件內(nèi)容轉(zhuǎn)換成下面的JSON格式:

 
 
 
  1. [
  2.    {
  3.        title: "The Principles of Beautiful Web Design, 2nd Edition",
  4.        url: "http://www.sitepoint.com/books/design2/",
  5.        author: "Jason Beaird",
  6.        publisher: "SitePoint",
  7.        price: {
  8.            currency: "USD",
  9.            amount: 39.95
  10.         }
  11.     },
  12.     {
  13.         title: "jQuery: Novice to Ninja",
  14.         url: "http://www.sitepoint.com/books/jquery1/",
  15.         author: "JEarle Castledine & Craig Sharkie",
  16.         publisher: "SitePoint",
  17.         price: {
  18.             currency: "USD",
  19.             amount: 29.95
  20.         }
  21.     },
  22.     {
  23.         title: "Build Your Own Database Driven Website",
  24.         url: "http://www.sitepoint.com/books/phpmysql4/",
  25.         author: "Kevin Yank",
  26.         publisher: "SitePoint",
  27.         price: {
  28.             currency: "USD",
  29.             amount: 39.95
  30.         }
  31.     }
  32. ]

這是一個(gè)通過對(duì)象來表示書的一種方式,并且有title、url、author、publisher、和price等信息。price是一個(gè)子對(duì)象,并且他包含貨幣類型和價(jià)格。

在JavaScript中很容易處理JSON。你可以使用瀏覽器原生的JSON.parse方法或者Douglas Crockford的JSON-js庫。就算這些都不能用,你也可以使用javaScript的eval方法。不需要再寫額外的處理數(shù)據(jù)的方法:

 
 
 
  1. var json = xhr.responseText;
  2. var book = JSON.parse(json);
  3. alert(book[0].title); //first book title
  4. alert(book[1].url); //second book URL

使用JSON的優(yōu)點(diǎn)在于:

◆ 比XML輕了很多,沒有那么多冗余的東西

◆ JSON也是具有很好的可讀性的,但是通常返回的都是壓縮過后的。不像XML這樣的瀏覽器可以直接顯示,瀏覽器對(duì)于JSON的格式化的顯示就需要借助一些插件了

◆ 在JavaScript中處理JSON很簡(jiǎn)單

◆ 其他語言例如PHP對(duì)于JSON的支持也不錯(cuò)

JSON也有一些劣勢(shì):

◆ JSON在服務(wù)端語言的支持不像XML那么廣泛,不過JSON.org上提供很多語言的庫

◆ 如果你使用eval()來解析的話,會(huì)容易出現(xiàn)安全問題

盡管如此,JSON的優(yōu)點(diǎn)還是很明顯的。他是Ajax數(shù)據(jù)交互的很理想的數(shù)據(jù)格式。

JSONP (JSON-p)

如果你使用XMLHttpRequest來調(diào)用JSON的web服務(wù),返回的數(shù)據(jù)可以通過JSON.parse()或者eval()來處理。你也可以使用Ajax組件來做腳本的插入,例如,將遠(yuǎn)程加載的腳本插入在DOM節(jié)點(diǎn)中,通過script標(biāo)簽調(diào)用:

 
 
 
  1. var script = document.createElement("script");
  2. script.src = "http://webservice.com/?a=1&b=2";
  3. document.getElementsByTagName("head")[0].appendChild(script);

跟XMLHttpRequest不同,插入script標(biāo)簽可以在不同源的情況下獲取其他服務(wù)的數(shù)據(jù)。這對(duì)于流量分析、書簽工具、小插件、廣告系統(tǒng)來說是很理想的選擇。

不過,返回的JSON數(shù)據(jù)通常都是當(dāng)做本地的代碼立即執(zhí)行。也不會(huì)賦值給變量,所以后面就再訪問不到了。不過這個(gè)問題我們可以通過給網(wǎng)絡(luò)服務(wù)傳遞一個(gè)callback參數(shù)來進(jìn)行回調(diào):

 
 
 
  1. var script = document.createElement("script");
  2. script.src = "http://webservice.com/?a=1&b=2&callback=MyDataHandler";
  3. document.getElementsByTagName("head")[0].appendChild(script);

這時(shí)候,網(wǎng)絡(luò)服務(wù)通常會(huì)返回一個(gè)包含在一個(gè)回調(diào)函數(shù)中的JSON數(shù)據(jù),這就是JSONP,或者“JSON with padding”,看看代碼:

 
 
 
  1. MyDataHandler([
  2.     {
  3.         title: "The Principles of Beautiful Web Design, 2nd Edition",
  4.         url: "http://www.sitepoint.com/books/design2/",
  5.         author: "Jason Beaird",
  6.         publisher: "SitePoint",
  7.         price: {
  8.             currency: "USD",
  9.             amount: 39.95
  10.          }
  11.      }
  12.      ...
  13. ]);

在JSON對(duì)象下載完畢之后,作為參數(shù)傳遞給了MyDataHandler()方法。

JSON和JSONP已經(jīng)是現(xiàn)在最流行的異步交互的數(shù)據(jù)格式了。但是在壓縮傳輸數(shù)據(jù)大小的方面還是可以再研究的。RockUX會(huì)在后面講到關(guān)于自定義數(shù)據(jù)返回。


標(biāo)題名稱:Ajax和WEB服務(wù)數(shù)據(jù)格式:JSONJSONP
URL分享:http://www.5511xx.com/article/dpgcjec.html