成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Ajax和WEB服務數據格式:JSON JSONP

開發 后端 前端
JSON和JSONP已經是現在最流行的異步交互的數據格式了。但是在壓縮傳輸數據大小的方面還是可以再研究的。

之前的文章中我們講到了早期的集中數據格式,XML,SOAP,HTML。現在,我們來看看JSON和JSONP。

JSON

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

我們可以將之前的XML圖書格式的文件內容轉換成下面的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.     }  

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

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

  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的優點在于:

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

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

◆ 在JavaScript中處理JSON很簡單

◆ 其他語言例如PHP對于JSON的支持也不錯

JSON也有一些劣勢:

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

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

盡管如此,JSON的優點還是很明顯的。他是Ajax數據交互的很理想的數據格式。

JSONP (JSON-p)

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

  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標簽可以在不同源的情況下獲取其他服務的數據。這對于流量分析、書簽工具、小插件、廣告系統來說是很理想的選擇。

不過,返回的JSON數據通常都是當做本地的代碼立即執行。也不會賦值給變量,所以后面就再訪問不到了。不過這個問題我們可以通過給網絡服務傳遞一個callback參數來進行回調:

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

這時候,網絡服務通常會返回一個包含在一個回調函數中的JSON數據,這就是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對象下載完畢之后,作為參數傳遞給了MyDataHandler()方法。

JSON和JSONP已經是現在最流行的異步交互的數據格式了。但是在壓縮傳輸數據大小的方面還是可以再研究的。RockUX會在后面講到關于自定義數據返回。

原文鏈接:http://rockux.com/

看看這一系列其他的文章:

Ajax和WEB服務數據格式:XML SOAP HTML

【編輯推薦】

  1. 使用 jQuery 簡化 Ajax 開發
  2. 用Dojo實現Ajax請求:XHR、跨域、及其他
  3. 盤點ASP.NET Ajax工具箱的10大頂級控件
  4. 簡化開發流程 了解各種Ajax框架的適用性
  5. Ajax安全隱患將成站點定時炸彈
責任編輯:陳貽新 來源: RockUX
相關推薦

2011-04-07 10:15:00

AjaxWeb

2011-04-11 13:14:58

AjaxWEB服務

2009-03-09 09:34:56

AjaxHTMLJavaScript

2010-01-06 14:04:55

Json數據格式

2013-03-27 10:51:44

iOSjson解析網絡交互數據格式解析

2009-09-07 19:02:07

JSON是什么

2014-08-12 10:15:42

數據格式JSONXML

2010-01-06 13:23:20

JSON數據格式

2024-02-19 15:38:08

JsonPython字符串

2024-04-15 13:13:04

PythonJSON

2024-12-19 00:12:02

APIJSON數據

2011-05-26 13:54:04

Json

2024-11-12 12:08:06

JSON數據技巧

2010-07-09 10:42:38

HART協議

2021-11-11 23:16:33

前端數據格式Web

2009-01-16 10:43:00

Web開發AJAX

2011-03-07 15:01:42

MySQLXML數據

2012-03-27 15:23:15

JSONPAJAX

2010-06-28 09:09:24

SQL Server

2010-07-09 10:27:33

SQL Server數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合国产第二页 | 国产精品99久久久久久久久久久久 | 欧美极品少妇xxxxⅹ免费视频 | 在线成人 | 三级黄色片在线 | 久久精品一级 | h视频免费在线观看 | 99亚洲综合 | 欧美日一区二区 | 一区二区三区国产好的精 | 日日噜噜噜夜夜爽爽狠狠视频97 | 久久毛片| 欧美亚洲视频在线观看 | 国产精品一区二区久久精品爱微奶 | 天天精品在线 | 国产精品无码久久久久 | 日韩欧美亚洲 | 亚洲国产18 | 伊人激情网 | 亚洲午夜av | 精品免费 | 三级国产三级在线 | 久久久久久久久国产成人免费 | 欧美一区二区三区精品 | 九一在线观看 | 2020亚洲天堂 | 一级片在线观看 | 欧美美女二区 | 久久精品久久精品 | 久久久久国产精品午夜一区 | 久久99这里只有精品 | 午夜三区 | 日韩成人免费中文字幕 | 国产主播第一页 | 日本高清视频在线播放 | 亚洲欧美日韩精品久久亚洲区 | 免费在线观看av网站 | 亚洲精品欧美一区二区三区 | 91精品国产日韩91久久久久久 | 亚洲欧美一区二区在线观看 | 国产精品久久久久久二区 |