婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > AJAX跨域請求JSONP獲取JSON數據的實例代碼

AJAX跨域請求JSONP獲取JSON數據的實例代碼

熱門標簽:怎樣在地圖標注文字 東平縣地圖標注app 立陶宛地圖標注 河間市地圖標注app 地圖標注推銷坑人 上海企業外呼系統價錢 中國地圖標注不明確情況介紹表 大眾點評400電話怎么申請 電銷機器人 長春

Asynchronous JavaScript and XML (Ajax) 是驅動新一代 Web 站點(流行術語為 Web 2.0 站點)的關鍵技術。Ajax 允許在不干擾 Web 應用程序的顯示和行為的情況下在后臺進行數據檢索。使用XMLHttpRequest 函數獲取數據,它是一種 API,允許客戶端 JavaScript 通過 HTTP 連接到遠程服務器。Ajax 也是許多 mashup 的驅動力,它可將來自多個地方的內容集成為單一 Web 應用程序。

不過,由于受到瀏覽器的限制,該方法不允許跨域通信。如果嘗試從不同的域請求數據,會出現安全錯誤。如果能控制數據駐留的遠程服務器并且每個請求都前往同一域,就可以避免這些安全錯誤。但是,如果僅停留在自己的服務器上,Web 應用程序還有什么用處呢?如果需要從多個第三方服務器收集數據時,又該怎么辦?

理解同源策略

同源策略阻止從一個域上加載的腳本獲取或操作另一個域上的文檔屬性。也就是說,受到請求的 URL 的域必須與當前 Web 頁面的域相同。這意味著瀏覽器隔離來自不同源的內容,以防止它們之間的操作。這個瀏覽器策略很舊,從 Netscape Navigator 2.0 版本開始就存在。

克服該限制的一個相對簡單的方法是讓 Web 頁面向它源自的 Web 服務器請求數據,并且讓 Web 服務器像代理一樣將請求轉發給真正的第三方服務器。盡管該技術獲得了普遍使用,但它是不可伸縮的。另一種方式是使用框架要素在當前 Web 頁面中創建新區域,并且使用GET 請求獲取任何第三方資源。不過,獲取資源后,框架中的內容會受到同源策略的限制。

克服該限制更理想方法是在 Web 頁面中插入動態腳本元素,該頁面源指向其他域中的服務 URL 并且在自身腳本中獲取數據。腳本加載時它開始執行。該方法是可行的,因為同源策略不阻止動態腳本插入,并且將腳本看作是從提供 Web 頁面的域上加載的。但如果該腳本嘗試從另一個域上加載文檔,就不會成功。幸運的是,通過添加 JavaScript Object Notation (JSON) 可以改進該技術。

1、什么是JSONP?

要了解JSONP,不得不提一下JSON,那么什么是JSON?

JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the language with no muss or fuss.

JSONP(JSON with Padding)是一個非官方的協議,它允許在服務器端集成Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。

2、JSONP有什么用?

由于同源策略的限制,XmlHttpRequest只允許請求當前源(域名、協議、端口)的資源,為了實現跨域請求,可以通過script標簽實現跨域請求,然后在服務端輸出JSON數據并執行回調函數,從而解決了跨域的數據請求。

3、如何使用JSONP?

下邊這一DEMO實際上是JSONP的簡單表現形式,在客戶端聲明回調函數之后,客戶端通過script標簽向服務器跨域請求數據,然后服務端返回相應的數據并動態執行回調函數。

HTML代碼 (任一):

meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
script type="text/javascript"> 
  function jsonpCallback(result) { 
    //alert(result); 
    for(var i in result) { 
      alert(i+":"+result[i]);//循環輸出a:1,b:2,etc. 
    } 
  } 
  var JSONP=document.createElement("script"); 
  JSONP.type="text/javascript"; 
  JSONP.src="http://crossdomain.com/services.php?callback=jsonpCallback"; 
  document.getElementsByTagName("head")[0].appendChild(JSONP); 
/script> 

或者

Html代碼

meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
script type="text/javascript"> 
  function jsonpCallback(result) { 
    alert(result.a); 
    alert(result.b); 
    alert(result.c); 
    for(var i in result) { 
      alert(i+":"+result[i]);//循環輸出a:1,b:2,etc. 
    } 
  } 
/script> 
script type="text/javascript" src="http://crossdomain.com/services.php?callback=jsonpCallback">/script> 

JavaScript的鏈接,必須在function的下面。

服務端PHP代碼 (services.php):

Php代碼 

?php 
//服務端返回JSON數據 
$arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); 
$result=json_encode($arr); 
//echo $_GET['callback'].'("Hello,World!")'; 
//echo $_GET['callback']."($result)"; 
//動態執行回調函數 
$callback=$_GET['callback']; 
echo $callback."($result)"; 

 如果將上述JS客戶端代碼用jQuery的方法來實現,也非常簡單。

$.getJSON
$.ajax
$.get

客戶端JS代碼在jQuery中的實現方式1:

Js代碼 

script type="text/javascript" src="jquery.js">/script> 
script type="text/javascript"> 
  $.getJSON("http://crossdomain.com/services.php?callback=?", 
  function(result) { 
    for(var i in result) { 
      alert(i+":"+result[i]);//循環輸出a:1,b:2,etc. 
    } 
  }); 
/script>  

客戶端JS代碼在jQuery中的實現方式2:

Js代碼 

script type="text/javascript" src="jquery.js">/script> 
script type="text/javascript"> 
  $.ajax({ 
    url:"http://crossdomain.com/services.php", 
    dataType:'jsonp', 
    data:'', 
    jsonp:'callback', 
    success:function(result) { 
      for(var i in result) { 
        alert(i+":"+result[i]);//循環輸出a:1,b:2,etc. 
      } 
    }, 
    timeout:3000 
  }); 
/script> 

客戶端JS代碼在jQuery中的實現方式3:

script type="text/javascript" src="jquery.js">/script> 
script type="text/javascript"> 
    $.get('http://crossdomain.com/services.php?callback=?', {name: encodeURIComponent('tester')}, function (json) { for(var i in json) alert(i+":"+json[i]); }, 'jsonp'); 
/script> 
 
其中 jsonCallback 是客戶端注冊的,獲取跨域服務器上的json數據后,回調的函數。

http://crossdomain.com/services.php?callback=jsonpCallback

這個 url 是跨域服務器取 json 數據的接口,參數為回調函數的名字,返回的格式為

jsonpCallback({msg:'this is json data'})  

Jsonp原理:

首先在客戶端注冊一個callback, 然后把callback的名字傳給服務器。

此時,服務器先生成 json 數據。
然后以 javascript 語法的方式,生成一個function , function 名字就是傳遞上來的參數 jsonp.

最后將 json 數據直接以入參的方式,放置到 function 中,這樣就生成了一段 js 語法的文檔,返回給客戶端。

客戶端瀏覽器,解析script標簽,并執行返回的 javascript 文檔,此時數據作為參數,傳入到了客戶端預先定義好的 callback 函數里.(動態執行回調函數)

使用JSON的優點在于:

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

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

在JavaScript中處理JSON很簡單。

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

JSON也有一些劣勢:

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

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

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

主要提示:

JSONP 是構建 mashup 的強大技術,但不幸的是,它并不是所有跨域通信需求的萬靈藥。它有一些缺陷,在提交開發資源之前必須認真考慮它們。

第一,也是最重要的一點,沒有關于 JSONP 調用的錯誤處理。如果動態腳本插入有效,就執行調用;如果無效,就靜默失敗。失敗是沒有任何提示的。例如,不能從服務器捕捉到 404 錯誤,也不能取消或重新開始請求。不過,等待一段時間還沒有響應的話,就不用理它了。(未來的 jQuery 版本可能有終止 JSONP 請求的特性)。

JSONP 的另一個主要缺陷是被不信任的服務使用時會很危險。因為 JSONP 服務返回打包在函數調用中的 JSON 響應,而函數調用是由瀏覽器執行的,這使宿主 Web 應用程序更容易受到各類攻擊。如果打算使用 JSONP 服務,了解它能造成的威脅非常重要。

以上所述是小編給大家介紹的AJAX跨域請求JSONP獲取JSON數據的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • jQuery使用JSONP實現跨域獲取數據的三種方法詳解
  • 通過jsonp獲取json數據實現AJAX跨域請求
  • JavaScript用JSONP跨域請求數據實例詳解
  • 基于Jquery的跨域傳輸數據(JSONP)
  • AJAX跨域請求之JSONP獲取JSON數據
  • 使用jsonp實現跨域獲取數據實例講解
  • AngularJS實現的JSONP跨域訪問數據傳輸功能詳解
  • Ajax的jsonp方式跨域獲取數據的簡單實例
  • jsonp跨域請求數據實現手機號碼查詢實例分析
  • jsonp跨域獲取數據的基礎教程

標簽:營口 本溪 內江 四川 銅川 益陽 玉樹 遼寧

巨人網絡通訊聲明:本文標題《AJAX跨域請求JSONP獲取JSON數據的實例代碼》,本文關鍵詞  AJAX,跨域,請求,JSONP,獲取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《AJAX跨域請求JSONP獲取JSON數據的實例代碼》相關的同類信息!
  • 本頁收集關于AJAX跨域請求JSONP獲取JSON數據的實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩成人综合天天影院 | 国产不卡在线一区| 91麻豆免费视频| 一区二区三区在线不卡| 欧美图片一区二区三区| 亚洲mv大片欧洲mv大片精品| 日本高清不卡在线观看| 国产精品久久一卡二卡| 国产一区二区三区四区在线观看| 国产嫩草影院久久久久| 国产999精品久久久久久绿帽| 国产亚洲人成网站| 制服视频三区第一页精品| 久久伊99综合婷婷久久伊| 欧美日韩中文精品| 午夜久久电影网| 久久只精品国产| av午夜精品一区二区三区| 午夜视频在线观看一区二区三区| 日韩免费观看高清完整版在线观看| 美国欧美日韩国产在线播放| 在线一区二区视频| 精品成人免费观看| 青草av.久久免费一区| 国产精品午夜春色av| 成人在线综合网| 国产成人自拍网| 日韩欧美一区电影| 成人动漫一区二区在线| 国产 日韩 欧美大片| 日韩精品一区二区三区在线播放| 免费成人在线播放| 亚洲天堂成人网| 色国产精品一区在线观看| 国产69精品久久久久毛片| 久久久久亚洲蜜桃| 色综合天天做天天爱| 成人免费视频caoporn| 一本到一区二区三区| 69精品人人人人| 国产精品色哟哟| 精品国产在天天线2019| 欧美日韩另类国产亚洲欧美一级| 性做久久久久久免费观看| 日韩高清不卡在线| 亚洲国产精品麻豆| 日韩欧美国产午夜精品| 91精品国产91久久久久久最新毛片| 亚洲在线观看免费| 久久久蜜臀国产一区二区| 午夜精品久久久久久不卡8050| 在线播放亚洲一区| 五月天亚洲精品| 久久青草欧美一区二区三区| 国产专区欧美精品| 国内外精品视频| 美日韩黄色大片| 国产精品人成在线观看免费| 午夜精品成人在线| 婷婷六月综合网| 亚洲一区二区不卡免费| 欧美少妇一区二区| 26uuu亚洲婷婷狠狠天堂| 色八戒一区二区三区| 一本大道av一区二区在线播放 | av电影在线观看不卡| 久久久精品蜜桃| 欧美一区二区三区色| 色婷婷精品大视频在线蜜桃视频| 91美女福利视频| 国产福利91精品一区二区三区| 亚洲欧美色综合| 亚洲精品中文在线影院| 欧美区在线观看| 国产欧美中文在线| 国产日韩精品一区| 中文字幕一区视频| 91精品国产综合久久久久久久久久| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩中文字幕一区| 91日韩精品一区| 国产成人在线影院| 欧美精品亚洲二区| 国产真实乱偷精品视频免| 97精品视频在线观看自产线路二| 青青草97国产精品免费观看无弹窗版| 久久99国产精品免费| 一区二区在线观看免费视频播放| 2021中文字幕一区亚洲| 午夜电影一区二区| 欧美日韩一级片在线观看| 国产亚洲精品免费| 一区二区三区四区乱视频| 久久精品人人做人人爽人人| 免费在线视频一区| 欧美日韩一区二区在线观看| 91成人在线精品| 精品久久久久久久久久久久久久久久久 | 欧美日韩欧美一区二区| 最新日韩av在线| 最新高清无码专区| 国产在线精品免费| 高清不卡在线观看av| 7777精品伊人久久久大香线蕉 | 中文字幕在线不卡| 亚洲乱码日产精品bd| 久久成人羞羞网站| 欧美亚洲自拍偷拍| 精品国产露脸精彩对白| 中文字幕一区二区三区在线观看 | 97se亚洲国产综合在线| 欧美二区乱c少妇| 国产亚洲精品资源在线26u| 日本午夜精品一区二区三区电影| 蜜桃av噜噜一区| 色成人在线视频| 99r精品视频| 欧美日韩性生活| 中文字幕一区二区三区四区不卡| 不卡一二三区首页| 91精品国产免费| 国产精品久久久久aaaa| 久久er精品视频| 亚洲成人免费在线| 国产精品一区免费视频| 国产精品久久久久久久久搜平片| 亚洲国产毛片aaaaa无费看| 久久99国产精品尤物| 午夜精品久久久久久不卡8050| 久久这里都是精品| 国产精品少妇自拍| 91福利精品第一导航| 欧美一区二区啪啪| 亚洲线精品一区二区三区| 日韩午夜在线播放| 国产一区二区三区香蕉| 色偷偷久久一区二区三区| 久久伊人蜜桃av一区二区| 婷婷国产在线综合| 国产高清亚洲一区| 日韩一二三区不卡| 亚洲色图视频网站| 国产成人在线看| 精品国产一区二区三区不卡| 日本免费新一区视频| 99视频在线精品| 男人的j进女人的j一区| av在线不卡免费看| 欧美一区二区二区| kk眼镜猥琐国模调教系列一区二区 | 亚洲成人一区在线| 欧美亚洲图片小说| 亚洲欧美综合网| 欧美成人官网二区| 国产精品综合久久| 久久综合久久综合亚洲| ...xxx性欧美| 国产伦精品一区二区三区在线观看 | 久久久久久免费| 国产一区欧美日韩| 亚洲欧美欧美一区二区三区| 99精品欧美一区| 中文欧美字幕免费| 免费观看久久久4p| 91精品麻豆日日躁夜夜躁| 亚洲欧洲精品天堂一级| 欧美色精品在线视频| 久久久精品2019中文字幕之3| 欧美四级电影网| 久久久亚洲高清| 99视频一区二区| 久久精工是国产品牌吗| **性色生活片久久毛片| 91精品国产一区二区三区蜜臀| 91高清视频在线| 婷婷夜色潮精品综合在线| 亚洲色图制服丝袜| av亚洲精华国产精华精华| 日韩中文字幕不卡| 精品国产一区二区精华| 久久精品国产精品亚洲综合| 精品视频在线免费看| ●精品国产综合乱码久久久久| 欧美精品一区男女天堂| 国产乱码一区二区三区| 国产三级三级三级精品8ⅰ区| 成人一区二区视频| 国产亚洲婷婷免费| 欧美私模裸体表演在线观看| 国产做a爰片久久毛片| 亚洲影视在线观看| 欧美精品乱人伦久久久久久| 色天使久久综合网天天| 成人av网址在线观看| 一区二区三区在线视频观看| 国产午夜精品福利| 韩国av一区二区三区在线观看| 中文字幕制服丝袜成人av| 91麻豆国产自产在线观看| 国产一区二区主播在线|