亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > AJAX > 正文

淺談JSON和JSONP區(qū)別及jQuery的ajax jsonp的使用

2024-09-01 08:32:56
字體:
供稿:網(wǎng)友
文章從JSON和JSONP區(qū)別開始講起,用實例來對比他們之間的不同之處,然后詳細(xì)講解了jQuery中的ajax jsonp的使用并給出了示例及詳細(xì)參數(shù)說明。這里推薦給大家,希望對小伙伴能有所幫助
 
 

JSON和JSONP
 
  JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,用于在瀏覽器和服務(wù)器之間交換信息。
 
  JSONP(JSON With Padding),就是打包在函數(shù)調(diào)用中的的JSON(或者包裹的JSON)。
 
  JSON是一種數(shù)據(jù)格式,JSONP是一種數(shù)據(jù)調(diào)用方式。
 

復(fù)制代碼代碼如下:

 //JSON
 {
 “name”: “sb”
 }

 

 

復(fù)制代碼代碼如下:

 //JSONP
 callback({
 “name”: “sb”
 })

 

  出于安全考慮,腳本(AJAX)不能訪問非本域的內(nèi)容。但是,靜態(tài)資源是不受域策略限制的,可以加載任意域的腳本、樣式、圖片等靜態(tài)資源,JSOP就是利用這種原理來實現(xiàn)跨域獲取數(shù)據(jù)的。
 
例1:

 

復(fù)制代碼代碼如下:

 //定義shoPrice函數(shù)
 function showPrice(data) {
     alert("Symbol: " + data.symbol + ", Price: " + data.price);
 }

 

 

復(fù)制代碼代碼如下:

 //在Web頁面中包含showPrice函數(shù)和參數(shù)
 <script type="text/javascript">
 function showPrice(data) {
     alert("Symbol: " + data.symbol + ", Price: " + data.price);
 }
 </script>
 <script type="text/javascript">showPrice({symbol: 'IBM', price: 91.42});</script>

 

  本例展示了如何將靜態(tài)JSON數(shù)據(jù)作為參數(shù)調(diào)用JavaScript函數(shù)。
 
 例2:
 
  第一種的函數(shù)調(diào)用完全可以寫在一個js文件中放在服務(wù)器上,用script標(biāo)簽加載到頁面,而且這個標(biāo)簽可以動態(tài)地創(chuàng)建。
 

復(fù)制代碼代碼如下:

 <script type="text/javascript">
 // This is our function to be called with JSON data
 function showPrice(data) {
     alert("Symbol: " + data.symbol + ", Price: " + data.price);
 }
 
 var url = “remote.js”; // 外部腳本的URL
 // 動態(tài)插入腳本
 var script = document.createElement('script');
 script.setAttribute('src', url);
 
 // 加載script
 document.getElementsByTagName('head')[0].appendChild(script); 
 </script>

 

remote.js的內(nèi)容和之前在標(biāo)簽里寫的一樣是:
 
 1 showPrice({symbol: 'IBM', price: 91.42}); 
 
  動態(tài)插入的JavaScript代碼,將要傳遞的JSON數(shù)據(jù)作為參數(shù),showPrice函數(shù)調(diào)用語句的參數(shù)。
 
  那么問題來了,每次獲取到數(shù)據(jù)都調(diào)用showPrice函數(shù)嗎?這就需要前后端程序猿做好約定,當(dāng)然這樣有很多不便,尤其是對于開放接口給公眾開發(fā)的情況。JSOP這樣處理:支持前端傳遞一個回調(diào)函數(shù)名參數(shù),后端接收回調(diào)函數(shù)名參數(shù),然后生成對該函數(shù)的調(diào)用,將JSON數(shù)據(jù)作為參數(shù)傳遞,在到達(dá)客戶端時將其插入頁面開始執(zhí)行。
 
例3:
 
  動態(tài)插入代碼,帶有callback參數(shù):
 

復(fù)制代碼代碼如下:

  <script type="text/javascript">
  // This is our function to be called with JSON data
  function showPrice(data) {
      alert("Symbol: " + data.symbol + ", Price: " + data.price);
  }
 var url = “remote.js?callback='showPrice'”; // 外部腳本的URL
 // 動態(tài)插入腳本
 var script = document.createElement('script');
 script.setAttribute('src', url);
 // 加載script
 document.getElementsByTagName('head')[0].appendChild(script); 
  </script>

 

后端用PHP實現(xiàn)的JSONP服務(wù)的代碼片段:
 

復(fù)制代碼代碼如下:

 $jsonData = getDataAsJson($_GET['symbol']);
 echo $_GET['callback'] . '(' . $jsonData . ');';
 // 打印: showPrice({"symbol" : "IBM", "price" : "91.42"});

很好的契合了JSONP的定義,打包在函數(shù)調(diào)用中的JSON數(shù)據(jù)。
 
以上幾個例子來自:
 
使用 JSONP 實現(xiàn)跨域通信,第 1 部分: 結(jié)合 JSONP 和 jQuery 快速構(gòu)建強(qiáng)大的 mashup
 
在jQuery中使用JSONP
 
  AJAX和JSONP在jQuery中的調(diào)用方式看起來極為相像,千萬不要被這種現(xiàn)象迷惑,它們本質(zhì)上有很大不同。AJAX是通過XMLHttpRequest對象獲取非頁面內(nèi)容,而JSONP是動態(tài)的添加<script>標(biāo)簽來調(diào)用服務(wù)器腳本。雖然jQuery把JSONP作為AJAX的一種形式進(jìn)行了封裝,但JSONP并不是AJAX的一種形式或一種特例。
 
復(fù)制代碼代碼如下:

 $.ajax({
     url: "http://query.yahooapis.com/v1/public/yql",
     jsonpCallback: "showPrice",
     jsonp: "callback",
     // tell jQuery we're expecting JSONP
     dataType: "jsonp",
     data: {
         q: "select title,abstract,url from search.news where query=/"cat/"",
         format: "json"
     },
     // work with the response
     success: function( data ) {
         console.log( data ); // server response
     }
 });

 

ajax請求參數(shù)說明:

dataType  String

預(yù)期服務(wù)器返回的數(shù)據(jù)類型。如果不指定,jQuery 將自動根據(jù) HTTP 包 MIME 信息來智能判斷,比如XML MIME類型就被識別為XML。在1.4中,JSON就會生成一個JavaScript對象,而script則會執(zhí)行這個腳本。隨后服務(wù)器端返回的數(shù)據(jù)會根據(jù)這個值解析后,傳遞給回調(diào)函數(shù)??捎弥?

"xml": 返回 XML 文檔,可用 jQuery 處理。

"html": 返回純文本 HTML 信息;包含的script標(biāo)簽會在插入dom時執(zhí)行。

"script": 返回純文本 JavaScript 代碼。不會自動緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。'''注意:'''在遠(yuǎn)程請求時(不在同一個域下),所有POST請求都將轉(zhuǎn)為GET請求。(因為將使用DOM的script標(biāo)簽來加載)

"json": 返回 JSON 數(shù)據(jù) 。

"jsonp": JSONP 格式。使用 JSONP 形式調(diào)用函數(shù)時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數(shù)名,以執(zhí)行回調(diào)函數(shù)。

"text": 返回純文本字符串
 
jsonp,
 
  重寫jsonp請求中的回調(diào)函數(shù)的名稱。至俄格值用來替代“callback=?”這種GET或POST請求URL參數(shù)里的“callback”部分,例如{jsonp:'onJsonPLoad'}會導(dǎo)致“onJsonPLoad”傳遞給服務(wù)器。
 
jsonpCallback,
 
  為jsonp指定一個回調(diào)函數(shù)名。這個值將用來取代jQuery自動生成的隨機(jī)函數(shù)名。這主要用來讓jQuery生成度獨特的函數(shù)名,這樣管理請求更容易,也能方便地提供回調(diào)函數(shù)和錯誤處理。你也可以在想讓瀏覽器緩存GET請求的時候,指定這個回調(diào)函數(shù)名。但是實際使用過程中,并不用寫回調(diào)函數(shù),比如此例中的showPrice,不寫也不會報錯,因為jQuery在處理JSONP的時候,自動幫你生成回調(diào)函數(shù)并且把數(shù)據(jù)取出來共success方法調(diào)用??赡芟襁@樣:

 

復(fù)制代碼代碼如下:

 function success_jsonpCallback(data) { success(data); }  

 

以上就是本文的全部內(nèi)容了,大家是否對jsonp有了細(xì)致的了解了呢。有什么疑問也請給我留言,大家共同探討。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
色哟哟一一国产精品| 四虎国产精品成人免费入口| 国产色视频一区二区三区qq号| 成人国产精品一级毛片视频| 精品国产亚洲日本| 日韩精品成人一区二区在线| 884aa四虎免费影库4h| 综合一区中文字幕| 久久久噜噜噜久久狠狠50岁| 麻豆视频免费在线观看| 美女av免费看| 2018日日夜夜| 国产一区二区三区视频在线播放| 欧美一区二区三区播放| 久久精品午夜福利| 成人三级视频在线观看| 在线看的你懂得| 五月天色婷婷综合| 蜜桃视频第一区免费观看| 欧美性三三影院| 亚洲精品国产综合区久久久久久久| 99精品电影| 国产欧美一区二区三区在线| 亚洲男女毛片无遮挡| 亚洲成av人影片在线观看| caoporn国产一区二区| 日韩xxxxxxxxx| 亚洲www在线观看| 三级4级全黄60分钟| 亚洲一区不卡在线| 欧美激情自拍| 国产精品一区二区久激情瑜伽| 东方av正在进入| 在线观看欧美日韩国产| 日本一区二区电影| 欧美激情videoshd| 国产精品电影| 国产精品蜜臀在线观看| 91婷婷韩国欧美一区二区| 欧美jizzhd欧美| 午夜国产一区| 久久精品日韩一区二区三区| 国产精品天堂蜜av在线播放| 日韩免费视频网站| 国产区一区二区| 69堂亚洲精品首页| 台湾亚洲精品一区二区tv| 99麻豆久久久国产精品免费优播| 日韩一区二区三区在线播放| 国产欧美日韩专区| xxxxbbbb欧美| 在线视频尤物| 国产欧美综合精品一区二区| 91成人国产精品| 在线视频亚洲专区| 无码人妻丰满熟妇区bbbbxxxx| 小毛片在线观看| heyzo在线观看| 国产一区二区不卡视频在线观看| 亚洲美女在线一区| 中文字幕乱码亚洲精品一区| 91啦中文在线观看| 91欧美大片| 亚洲午夜久久久久久久久电影院| 无码国产精品一区二区高潮| 久久午夜剧场| www.99视频| 国产嫩草一区二区三区在线观看| 色偷偷亚洲女人天堂观看欧| 农村寡妇一区二区三区| 五十路亲子中出中文字幕| 红桃成人av在线播放| 国产精品成人无码专区| 国产寡妇树林野战在线播放| 欧美成人乱码一区二区三区| 成人在线免费电影网站| 在线观看免费国产成人软件| 久久99国产精一区二区三区| 午夜电影一区| 日本中文字幕中出在线| 樱花草涩涩www在线播放| 国产资源在线播放| 成年女人午夜毛片免费看| 久久久久久久久久一区二区三区| 亚洲国产美女视频| 欧美日韩国产免费观看| 久久久久久尹人网香蕉| 午夜激情视频在线观看| 国产日产亚洲系列最新| 国产精品视频你懂的| 国产精品99久久99久久久二8| 成久久久网站| 久久精品国产福利| 国产乱理伦片在线观看夜一区| 免费理论片在线观看播放老| 国产福利一区二区| 欧洲亚洲免费视频| 欧美日韩国产首页| 日韩欧美一区二区三区久久婷婷| 久久久久久久极品内射| 少妇一级淫免费播放| 91黑人精品一区二区三区| 日韩高清国产一区在线| 中文字幕第4页| 日韩高清国产一区在线观看| 亚洲精品一线二线三线无人区| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美人与物videos另类| 精品国产_亚洲人成在线| 天天干天天操天天做| 日韩在线中文字| 亚洲黄色视屏| 亚洲精品中文字幕乱码三区91| 中文字幕一区二区三区中文字幕| 国产精品免费麻豆入口| 日韩av在线看| 欧美有码在线观看视频| 亚洲三级网站| 久久久精品国产99久久精品芒果| 1024亚洲合集| 日本伊人精品一区二区三区观看方式| 99re视频在线播放| 国产精品婷婷午夜在线观看| 无码日韩精品一区二区免费| 性网站在线播放| 日日躁夜夜躁白天躁晚上躁91| 在线观看美女网站大全免费| 777a∨成人精品桃花网| av片免费播放| www在线观看播放免费视频日本| 精品在线免费观看视频| 日本一本中文字幕| 亚洲天堂小视频| 色影视在线视频资源站| 国产黄色一区二区三区| 亚洲精品鲁一鲁一区二区三区| 亚洲永久精品视频| 欧美在线中文字幕| 欧美激情午夜| 亚洲高清视频一区| 伦理片一区二区| 日本一区二区黄色| 一本久久a久久免费精品不卡| 一区二区三区四区视频在线| h视频在线免费| 欧美视频二区欧美影视| 国产精品久久久久久久7电影| 国产精品欧美韩国日本久久| 国产一区欧美二区三区| www.91| a级片在线观看| 在线观看国产免费视频| 女人被狂躁c到高潮| 色噜噜日韩精品欧美一区二区| 黄色一级在线视频| 久久精品欧美一区二区三区不卡| 日韩欧美一区二区三区在线观看| 国产在线观看不卡一区二区三区| 国产精品永久免费| 激情国产在线| 香蕉成人app免费看片| 视频免费裸体网站| 天堂在线免费观看| 日本dvd播放| 欧美日韩一区自拍| 亚洲h色精品| 尤物网站在线观看| 日本成人在线视频网址| 国产亚洲精品美女久久久久久久久久| 免费久久久久久| 国产在线一区二区视频| 91短视频在线| 97在线观看视频免费| av日韩中文字幕| 永久久久免费浮力影院| 岛国视频午夜一区免费在线观看| 亚洲少妇自拍| 韩国av一区二区三区在线观看| 波多野结衣久草一区| www欧美在线| 热三久草你在线| 极品av少妇一区二区| 成人欧美一区二区三区在线湿哒哒| 精品福利樱桃av导航| 国产调教打屁股xxxx网站| 91免费公开视频| 精品视频在线播放色网色视频| 污污网站在线免费观看| 国产福利一区视频| 992tv快乐视频| 蜜臀av.com| 免费网站观看电影入口| 日本午夜精品一区二区| 国产精品专区在线| 美女被啪啪一区二区| 国产精品一区二区三区四区色| 久久婷婷综合激情| 成人小说亚洲一区二区三区| 黄色网在线播放| 成人国产精品免费观看视频| 国产精品爽爽爽爽爽爽在线观看| 欧美性受xxxx黑人猛交| 日韩高清在线不卡| 7777精品伊人久久久大香线蕉最新版| 国产在视频线精品视频www666| 国产精品美女久久久久久久久久久| 精品婷婷色一区二区三区蜜桃| 亚洲欧美综合另类中字| 91精品欧美久久久久久动漫| 国产精品69久久久久| 成人av动漫在线观看| 一区二区三区国产精华| 翔田千里一区二在线观看| 亚洲国产精品精华液2区45| 国产福利片在线观看| 99国产精品久久久久久久| 日本不卡视频在线观看| 免费中文字幕av| 欧美日本国产精品| 国产精品美女久久久久aⅴ国产馆| 999国产精品| 97超碰欧美中文字幕| 国内爆初菊对白视频| 亚洲va欧美va国产综合剧情| 少妇太紧太爽又黄又硬又爽小说| 国产黄色免费大片| 亚洲美女中文字幕| 97在线视频观看| 国产91精品一区二区麻豆亚洲| 欧美人成免费网站| proumb性欧美在线观看| 欧美aaa在线观看| 一区在线观看视频| 最近2019年日本中文免费字幕| 不卡的看片网站| av成人在线观看| 日日噜噜噜夜夜爽爽| 在线中文字幕一区| 国产精品电影一区二区| 免费大片黄在线| 国产毛片欧美毛片久久久| 欧美 日韩 国产精品| 一区二区在线观| 亚洲石原莉奈一区二区在线观看| 久久人人九九| 日韩欧美黄色大片| 日本欧美大码aⅴ在线播放| 亚洲同性同志一二三专区| 免费人成在线观看播放视频| 97人人干人人| 亚洲高清av在线| 午夜激情视频网| 日韩一区二区三区久久| 媚黑女一区二区| 日韩精品在线一区二区三区| 国产三区视频在线观看| 91精品久久久久久久久中文字幕| 欧美国产日韩在线观看| 欧美在线www| www.91av视频.com| 国产av人人夜夜澡人人爽| 夜夜嗨av一区二区三区四季av| 免费看污污视频| 日韩av123| 欧美日韩精品一区二区天天拍小说| 亚洲一区二区三区四区| 超碰资源在线| 欧美猛男男男激情videos| 国产精品av久久久久久麻豆网| 亚洲欧美综合视频| 国产精品成人av性教育| 日本888xxxx| 国产精品成人一区二区三区电影毛片| 偷拍自拍亚洲色图| 国产亚洲成人一区| 色婷婷综合五月| 亚洲涩涩在线观看| 成年人视频网站免费| 欧美高清videos高潮hd| 国产精品久久精品视| 欧美大片在线观看一区二区| 日本久久电影网| 在线观看一二三区| 国产日韩视频在线| 亚洲欧美伊人| 亚洲免费一级电影| 激情久久久久久久久久久久久久久久| 美女国产一区| 国产精品久久久久秋霞鲁丝| 欧美成人视屏| 92久久精品一区二区| 一级毛片免费高清中文字幕久久网| 日韩一区二区精品视频| 久久一区亚洲| 成人亚洲综合色就1024| 亚洲永久精品在线观看| 噼里啪啦在线中文观看| 欧美 日韩 国产 一区| 波多野结衣一区二区三区在线观看| 国产一级片在线播放| 天堂成人在线| 亚洲成av在线| 国产人与禽zoz0性伦| 99在线视频影院| 国产黄色91视频| 日本激情小视频| 日韩视频一区二区在线观看| 波多野结衣在线观看一区二区| 成人网男人的天堂| 九色91蝌蚪| 国产麻豆视频一区| 欧美激情四色| 色噜噜成人av在线| 国产.com| 日韩电影大全网站| 日韩特级毛片| 6080yy精品一区二区三区| 中文字幕人妻熟女在线| 潘金莲一级淫片aaaaaa播放| 日韩av在线看免费观看| 亚洲精品成av人片天堂无码| 中文字幕视频网| 成人免费看视频| 亚洲欧美视频在线观看| 妞干网在线视频观看| 97视频精彩视频在线观看| 国产一区二区高清视频| 日本不卡不码高清免费观看|