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

首頁(yè) > 開(kāi)發(fā) > AJAX > 正文

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

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

JSON和JSONP
 
  JSON(JavaScript Object Notation)是一種輕量級(jí)的數(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)不能訪問(wèn)非本域的內(nèi)容。但是,靜態(tài)資源是不受域策略限制的,可以加載任意域的腳本、樣式、圖片等靜態(tài)資源,JSOP就是利用這種原理來(lái)實(shí)現(xiàn)跨域獲取數(shù)據(jù)的。
 
例1:

 

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

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

 

 

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

 //在Web頁(yè)面中包含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)用完全可以寫在一個(gè)js文件中放在服務(wù)器上,用script標(biāo)簽加載到頁(yè)面,而且這個(gè)標(biāo)簽可以動(dòng)態(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
 // 動(dòng)態(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}); 
 
  動(dòng)態(tài)插入的JavaScript代碼,將要傳遞的JSON數(shù)據(jù)作為參數(shù),showPrice函數(shù)調(diào)用語(yǔ)句的參數(shù)。
 
  那么問(wèn)題來(lái)了,每次獲取到數(shù)據(jù)都調(diào)用showPrice函數(shù)嗎?這就需要前后端程序猿做好約定,當(dāng)然這樣有很多不便,尤其是對(duì)于開(kāi)放接口給公眾開(kāi)發(fā)的情況。JSOP這樣處理:支持前端傳遞一個(gè)回調(diào)函數(shù)名參數(shù),后端接收回調(diào)函數(shù)名參數(shù),然后生成對(duì)該函數(shù)的調(diào)用,將JSON數(shù)據(jù)作為參數(shù)傳遞,在到達(dá)客戶端時(shí)將其插入頁(yè)面開(kāi)始執(zhí)行。
 
例3:
 
  動(dòng)態(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
 // 動(dòng)態(tài)插入腳本
 var script = document.createElement('script');
 script.setAttribute('src', url);
 // 加載script
 document.getElementsByTagName('head')[0].appendChild(script); 
  </script>

 

后端用PHP實(shí)現(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ù)。
 
以上幾個(gè)例子來(lái)自:
 
使用 JSONP 實(shí)現(xiàn)跨域通信,第 1 部分: 結(jié)合 JSONP 和 jQuery 快速構(gòu)建強(qiáng)大的 mashup
 
在jQuery中使用JSONP
 
  AJAX和JSONP在jQuery中的調(diào)用方式看起來(lái)極為相像,千萬(wàn)不要被這種現(xiàn)象迷惑,它們本質(zhì)上有很大不同。AJAX是通過(guò)XMLHttpRequest對(duì)象獲取非頁(yè)面內(nèi)容,而JSONP是動(dòng)態(tài)的添加<script>標(biāo)簽來(lái)調(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請(qǐng)求參數(shù)說(shuō)明:

dataType  String

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

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

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

"script": 返回純文本 JavaScript 代碼。不會(huì)自動(dòng)緩存結(jié)果。除非設(shè)置了"cache"參數(shù)。'''注意:'''在遠(yuǎn)程請(qǐng)求時(shí)(不在同一個(gè)域下),所有POST請(qǐng)求都將轉(zhuǎn)為GET請(qǐng)求。(因?yàn)閷⑹褂肈OM的script標(biāo)簽來(lái)加載)

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

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

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

 

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

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

 

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产1区2区在线观看| 男女激情无遮挡| 欧美人善交videosg| 亚洲国产日韩在线人成电影| 国产精品乱战久久久| 懂色av一区二区三区在线播放| 精品无码久久久久成人漫画| 黄色在线观看网站| 欧美一区二区三区观看| 999久久久国产精品| 亚洲成熟丰满熟妇高潮xxxxx| 婷婷综合影院| 日韩av观看网址| 国产精品激情偷乱一区二区∴| 91成人在线免费| 亚洲国产小视频在线观看| 欧美性资源免费| 国产91丝袜在线播放九色| 四虎成人精品在永久在线观看| 国产成人免费在线观看视频| 久久精品久久精品亚洲人| 蜜桃久久久久| 午夜精品福利视频网站| 日韩子在线观看| 欧美另类激情| 国产麻豆精品在线| 欧美精品18videosex性欧美| 北条麻妃一区二区三区在线观看| 日日噜噜噜噜夜夜爽亚洲精品| 国产午夜精品一区二区三区| 欧美亚洲高清一区二区三区不卡| 欧美日韩国产经典色站一区二区三区| 黄页免费在线观看视频| 满满都是荷尔蒙韩剧在线观看| 欧美黑人巨大xxxxx| 国产探花视频在线播放| 日韩a级大片| 欧美亚洲另类色图| 国产精品久久国产精品99gif| 人妻换人妻仑乱| 99精品一区二区三区的区别| 亚洲高清视频免费观看| 麻豆md0077饥渴少妇| 精品999视频| 九色自拍麻豆| 欧美精品一区二区三区高清aⅴ| 国产欧美日韩久久| 亚洲va国产日韩欧美精品色婷婷| 久久久久观看| 日韩欧美视频专区| 久久6精品影院| 中文成人无字幕乱码精品区| 日韩精品一区二区三区四| 欧美丝袜丝交足nylons图片| 香蕉影院在线| 男女污污视频在线观看| 中文字幕一区二区三区免费视频| 亚洲午夜久久久久中文字幕久| 国产伦精品一区二区三区免| 国产精品久久福利| 亚洲国产美女视频| 在线视频播放大全| 欧美一区二区三区四区在线观看地址| 亚洲日本无吗高清不卡| 亚洲国产视频一区| 免费白浆视频| 手机av在线免费| 天天干夜夜干| 国产成人在线影院| 国产69精品一区二区亚洲孕妇| 91久久久亚洲精品| 一区二区欧美在线观看| 国产精品极品在线观看| 精品国产一区二区三区小蝌蚪| av一本久道久久综合久久鬼色| 日韩国产一区二| 三妻四妾完整版在线观看电视剧| 男女啪啪999亚洲精品| 青青草中文字幕| 亚洲国产精品字幕| 91成人精品视频| 日韩中文字幕三区| 色噜噜国产精品视频一区二区| 姑娘第5集在线观看免费好剧| 欧洲亚洲在线视频| 啊啊啊久久久| 青青草免费在线视频观看| 一区二区三区在线观看国产| 亚洲成a人v欧美综合天堂麻豆| 日韩精品一级毛片在线播放| 日韩免费在线电影| 亚洲永久精品唐人导航网址| 日韩视频在线一区二区| 免费在线观看成人| 最新中文字幕在线播放| 日韩美女在线视频| 中文在线免费二区三区| 高清电影一区| 日韩在线免费高清视频| 久久黄色片视频| yy111111少妇嫩草影院| 免费激情小视频| 久色视频在线| 成人免费视频国产免费麻豆| 国产精品视频一区二区高潮| 亚洲综合日韩| 国产欧美精品在线| 一本久道中文无码字幕av| 最新国产在线精品91尤物| 亚洲大尺度视频在线观看| 国产欧亚日韩视频| 中文字幕资源网在线观看| 欧美日韩中文字幕| 在线观看美女网站大全免费| 免费高清视频精品| 91色在线观看| 午夜黄色小视频| 一个人免费观看在线视频www| 中文字幕在线免费观看视频| 欧美色综合网站| 亚洲精品888| 一个人看的日本www的免费视频| 婷婷精品久久久久久久久久不卡| 亚洲欧美天堂网| 国产成人亚洲综合91精品| 另类小说一区二区三区| 国产伦精品一区二区三区视频女| 国产欧美精品日韩精品| 国产嫩草一区二区三区在线观看| 国产日韩欧美在线视频观看| 中文xxx视频| 中文字幕成人免费视频| 亚洲黄色三级视频| 日本高清视频免费看| 亚洲视频在线观看一区| 亚洲天堂a在线| 无码人妻丰满熟妇区五十路百度| 精品视频免费| 成人看的羞羞网站| 91视频最新| www.成人影院| 伊人久久亚洲影院| 国产在线精品一区二区三区不卡| 国产午夜福利在线播放| 国产精品一国产精品| 亚洲成人直播| 日韩激情电影| 青青草97国产精品免费观看无弹窗版| 国产成人无码精品久久久性色| 亚洲国产精品99久久| 日日摸日日碰夜夜爽无码| 黄色免费视频大全| 久久男人资源视频| 欧洲永久精品大片ww免费漫画| 日韩欧美手机在线| 大胆国模一区二区三区| 久久精品日韩无码| 欧美精品人人做人人爱视频| 人妻熟女一二三区夜夜爱| 国产成人在线免费看| 欧美一区二区三区人| 九色网友自拍视频手机在线| 免费观看又色又爽又黄的网站| 草草在线观看| 亚洲在线激情| 欧美日韩裸体免费视频| 亚洲国产影院| 久久久久亚洲av成人无码电影| 555夜色666亚洲国产免| 国产色在线观看| 3p视频在线观看| 久久久久久夜| 欧美一区二区三| 玛丽玛丽电影原版免费观看1977| 夜夜躁日日躁狠狠久久av| 日韩欧美一区二区三区不卡视频| 99久久亚洲国产日韩美女| 亚洲一区二区三区在线免费观看| 国产福利电影| 色av综合在线| 51成人做爰www免费看网站| 中文字幕4区| 国产中文第一页| 亚洲大尺度视频在线观看| 丝袜美腿美女被狂躁在线观看| 亚洲精品永久免费精品| 成人网在线免费观看| 久久激五月天综合精品| 手机免费av片| 欧美黑人xxxxx| 草草视频在线| 欧美14一18处毛片| 看电影就来5566av视频在线播放| 亚洲国产一区二区三区高清| www.玖玖玖| 日韩精品免费一区二区在线观看| 韩国v欧美v日本v亚洲v| 成人精品中文字幕| www国产亚洲精品久久网站| 亚洲一级二级在线| 国产欧美成人| 欧美性猛交乱大交| 欧美日韩一区二区三区四区不卡| 日韩国产一区久久| 国产日韩中文字幕| 经典三级在线| 久久久资源网| 国产精品久久久久久久久久三级| 天天躁日日躁成人字幕aⅴ| 国产精品美女久久久久av超清| 日日躁天天躁狠狠躁| 在线精品亚洲一区二区不卡| 99精品国产在热久久下载| 亚洲欧美日本精品| 日韩中出av| 亚洲热在线观看| 亚洲婷婷国产精品电影人久久| 亚洲人一二三区| 精品国产免费久久久久久婷婷| 韩国欧美国产一区| 欧美亚州一区二区三区| 国产精品嫩草影院俄罗斯| 手机看片一区二区| 欧美日韩p片| 亚洲国产成人不卡| 欧美一区二区三区在线观看免费| aa视频在线观看| 欧美色道久久88综合亚洲精品| 欧美99久久| 夜夜躁日日躁狠狠久久88av| 91香蕉视频在线播放| 日韩成人av网| 色噜噜狠狠一区二区| 欧美变态xxxx| 99国产精品久久| 亚洲丝袜另类动漫二区| 男人天堂网在线观看| 天天综合亚洲| 中国黄色片一级| 欧美xxx视频| 亚洲精品中文字幕乱码三区91| 久久蜜桃av一区二区天堂| 国产99久久久久久免费看农村| 日本妇女毛茸茸| 日本aⅴ精品一区二区三区| 99在线热播精品免费99热| av免费在线观看不卡| 成人美女免费网站视频| 伊人一区二区三区久久精品| 午夜精品免费观看| 在线播放第一页| 夜夜嗨av一区二区三区网页| 国产无遮挡裸体视频在线观看| 波多野结衣视频网站| 午夜18视频在线观看| 国产九色91| 久操成人在线视频| 成人免费视频视频在线观看免费| 91蜜桃视频在线| 亚洲人成网站影音先锋播放| 国产网站免费在线观看| 青青草97国产精品免费观看无弹窗版| 男人操女人逼免费视频| 伊人手机在线| 最近2019中文字幕第三页视频| 欧美一级久久久久久久久大| 免费看成年人视频| 一区二区国产精品精华液| www成人免费| 日本高清中文字幕在线| 欧美日韩精品一二三区| 国产精品v欧美精品v日韩精品| 欧美一区二区三区粗大| 欧美成人精品不卡视频在线观看| www.国产91| 日本免费一区二区三区| 91精品国产91久久久久久吃药| 国产精品嫩草在线观看| 欧美精品在线一区| 久久久影院免费| 亚洲一区二区自偷自拍| 一本色道久久88亚洲精品综合| 国产视频精品一区二区三区| 手机看片久久| 91亚洲精品久久久久久久久久久久| 蜜臀久久99精品久久久画质超高清| 午夜国产精品理论片久久影院| 国产欧美日韩精品一区二区三区| 亚洲淫成人影院| 成人欧美一区二区三区的电影| 国产风韵犹存在线视精品| wwwxxx免费| 成人黄色网免费| 一个人免费播放在线视频看片| 视频一区二区三区入口| 午夜影视一区二区三区| 精品影片一区二区入口| 无码人妻av免费一区二区三区| 欧美日韩中文字幕日韩欧美| 青青青伊人色综合久久| 亚洲精品视频观看| 韩国一区二区av| 中出福利视频| 国产在线精品二区| 日日夜夜视频| 亚洲国产综合91精品麻豆| 国产探花在线精品一区二区| 国产精品xxx在线观看| 成人毛片在线免费观看| 国产福利免费观看| 黑人性生活视频| 亚洲国产精品va在线看黑人| 国产一区二区在线视频聊天| 欧美一区二区三区在线观看免费| eeuss影院www| 成人在线播放| 国产视频欧美视频| 大伊香蕉精品在线品播放| www.国产91| a天堂在线观看| 天天天天天天操| 亚洲成av人片一区二区| 好吊妞这里只有精品| 国产精品50页| 成人黄色一级视频| 婷婷综合福利| 久久久国产综合精品女国产盗摄| 久久久高清视频|