json與jsonp

什么是JSON

     JSON是一種基于文本的數據交換方式,或者叫做數據描述格式

JSON的優(yōu)點:

1聋袋、基于純文本队伟,跨平臺傳遞極其簡單穴吹;

2幽勒、Javascript原生支持,后臺語言幾乎全部支持港令;

3啥容、輕量級數據格式,占用字符數量極少,特別適合互聯(lián)網傳遞疲牵;

4疏尿、可讀性較強,雖然比不上XML那么一目了然遥昧,但在合理的依次縮進之后還是很容易識別的覆醇;

5、容易編寫和解析炭臭,當然前提是你要知道數據結構永脓;

JSON的格式/規(guī)則:

JSON能夠以非常簡單的方式來描述數據結構,XML能做的它都能做鞋仍,因此在跨平臺方面兩者完全不分伯仲常摧。

1、JSON只有兩種數據類型描述符威创,大括號{}和方括號[]落午,其余英文冒號:是映射符,英文逗號,是分隔符肚豺,英文雙引號""是定義符溃斋。

2、大括號{}用來描述一組“不同類型的無序鍵值對集合”(每個鍵值對可以理解為OOP的屬性描述)详炬,方括號[]用來描述一組“相同類型的有序數據集合”(可對應OOP的數組)盐类。

3、上述兩種集合中若有多個子項呛谜,則通過英文逗號,進行分隔在跳。

4、鍵值對以英文冒號:進行分隔隐岛,鍵名都加上英文雙引號”"猫妙,以便于不同語言的解析。

5聚凹、JSON內部常用數據類型有 字符串割坠、數字、布爾妒牙、日期彼哼、null ,字符串必須用雙引號引起來湘今,其余的都不用敢朱,日期類型比較特殊,如果客戶端沒有按日期排序功能需求的話,那么可以把日期時間直接作為字符串傳遞
JSON實例:

//描述一個人

var person={"Name": "Bob","Age": 32,"Company": "IBM","Engineer":true}

//獲取這個人的信息var personAge=person.Age;

//描述幾個人

var members=[

{"Name": "Bob","Age": 32,"Company": "IBM","Engineer":true},

{"Name": "John","Age": 20,"Company": "Oracle","Engineer":false},

{"Name": "Henry","Age": 45,"Company": "Microsoft","Engineer":false}

]

//讀取其中John的公司名稱

var johnsCompany= members[1].Company;

//描述一次會議

var conference=

{"Conference": "Future Marketing","Date": "2012-6-1","Address": "Beijing","Members":

[

{"Name": "Bob","Age": 32,"Company": "IBM","Engineer":true},

{"Name": "John","Age": 20,"Company": "Oracle","Engineer":false},

{"Name": "Henry","Age": 45,"Company": "Microsoft","Engineer":false}

]

}

jsonp

1拴签、Ajax直接請求普通文件存在跨域無權限訪問的問題

2孝常、Web頁面上調用js文件時則不受是否跨域的影響,凡是擁有”src”這個屬性的標簽都擁有跨域的能力JSON的純字符數據格式可以簡潔的描述復雜數據,JSON還被js原生支持,為了便于客戶端使用數據蚓哩,逐漸形成了一種非正式傳輸協(xié)議构灸,人們把它稱作JSONP,該協(xié)議的一個要點就是允許用戶傳遞一個callback參數給服務端岸梨,然后服務端返回數據時會將這個callback參數作為函數名來包裹住JSON數據喜颁,這樣客戶端就可以隨意定制自己的函數來自動處理返回數據了。

JSONP的客戶端具體實現:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript">
    // 得到信息查詢結果后的回調函數
    var flightHandler = function(data){
        alert('你查詢的航班結果是:票價 ' + data.price + ' 元曹阔,' + '余票 ' + data.tickets + ' 張洛巢。');
    };
    // 提供jsonp服務的url地址(不管是什么類型的地址,最終生成的返回值都是一段javascript代碼)
    var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";
    // 創(chuàng)建script標簽次兆,設置其屬性
    var script = document.createElement('script');
    script.setAttribute('src', url);
    // 把script標簽加入head稿茉,此時調用開始
    document.getElementsByTagName('head')[0].appendChild(script);
    </script>
</head>
<body>
 
</body>
</html>

jQuery中的jsonp

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" >
 <head>
     <title>Untitled Page</title>
      <script type="text/javascript" src=jquery.min.js"></script>
      <script type="text/javascript">
     jQuery(document).ready(function(){
        $.ajax({
             type: "get",
             async: false,
             url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998",
             dataType: "jsonp",
             jsonp: "callback",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(一般默認為:callback)
             jsonpCallback:"flightHandler",//自定義的jsonp回調函數名稱芥炭,默認為jQuery自動生成的隨機函數名漓库,也可以寫"?",jQuery會自動為你處理數據
             success: function(json){
                 alert('您查詢到航班信息:票價: ' + json.price + ' 元园蝠,余票: ' + json.tickets + ' 張渺蒿。');
             },
             error: function(){
                 alert('fail');
             }
         });
     });
     </script>
     </head>
  <body>
  </body>
 </html>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市彪薛,隨后出現的幾起案子茂装,更是在濱河造成了極大的恐慌,老刑警劉巖善延,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件少态,死亡現場離奇詭異,居然都是意外死亡易遣,警方通過查閱死者的電腦和手機彼妻,發(fā)現死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豆茫,“玉大人侨歉,你說我怎么就攤上這事】辏” “怎么了幽邓?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長火脉。 經常有香客問我牵舵,道長茅特,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任棋枕,我火速辦了婚禮,結果婚禮上妒峦,老公的妹妹穿的比我還像新娘重斑。我一直安慰自己,他們只是感情好肯骇,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布窥浪。 她就那樣靜靜地躺著,像睡著了一般笛丙。 火紅的嫁衣襯著肌膚如雪漾脂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天胚鸯,我揣著相機與錄音骨稿,去河邊找鬼。 笑死姜钳,一個胖子當著我的面吹牛坦冠,可吹牛的內容都是我干的。 我是一名探鬼主播哥桥,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼辙浑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了拟糕?” 一聲冷哼從身側響起判呕,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎送滞,沒想到半個月后侠草,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡犁嗅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年梦抢,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愧哟。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡奥吩,死狀恐怖,靈堂內的尸體忽然破棺而出蕊梧,到底是詐尸還是另有隱情霞赫,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布肥矢,位于F島的核電站端衰,受9級特大地震影響叠洗,放射性物質發(fā)生泄漏。R本人自食惡果不足惜旅东,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一灭抑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抵代,春花似錦腾节、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至康吵,卻和暖如春劈榨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晦嵌。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工同辣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惭载。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓邑闺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棕兼。 傳聞我的和親對象是個殘疾皇子陡舅,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容