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

首頁 > 語言 > JavaScript > 正文

js跨域請求數據的3種常用的方法

2024-05-06 16:25:35
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了js跨域請求數據的3種常用的方法,需要的朋友可以參考下
 

由于js同源策略的影響,當在某一域名下請求其他域名,或者同一域名,不同端口下的url時,就會變成不被允許的跨域請求。
那這個時候通常怎么解決呢,對此菜鳥光頭我稍作了整理:
1.JavaScript
   在原生js(沒有jQuery和ajax支持)的情況下,通??蛻舳舜a是這樣的(我假設是在localhost:8080的端口下的http://localhost:8080/webs/i.mediapower.mobi/wutao/index.html頁面的body標簽下面加入以下代碼):

<script>  var xhr = new XMLHttpRequest();  xhr.open("get", "http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js", true);  xhr.onreadystatechange = function() {    if (xhr.readyState == 4 && xhr.status == 200) {      console.log(xhr.responseText);    }  };  xhr.send(null);</script>

保存,瀏覽器打開http://localhost:8080/webs/i.mediapower.mobi/wutao/index.html,并且打開console控制臺:

js跨域請求數據的3種常用的方法

瀏覽器很無情的給你彈出一個同源限制的錯誤,意思就是你無法跨域請求url的數據。
那么,我先采取第一種策略,運用html中的script標簽,插入js腳本:
(1)通過script標簽引用,寫死你需要的src的url地址,比如:

<script>var callbackfunction = function(data) {  console.log('我是跨域請求來的數據-->' + data.name);};</script><script src="http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js?callback=callbackfunction"></script> 

這里我定義一個callbackfunction的函數,然后用script標簽的src屬性跨域請求數據,那么,test.js的內容經過約定,需要寫成這樣:
callbackfunction({"name":"wwwwwwwwwwww"});
保存,打開index.html并刷新:

js跨域請求數據的3種常用的方法

(2)你也可以動態的加入script標簽,讓html解析的時候,動態的加載script腳本,并請求遠端數據:

<script>var callbackfunction = function(data) {  console.log('我是跨域請求來的數據-->' + data.name);};var script = document.createElement('script'),  body = document.getElementsByTagName('body');script.src = 'http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js?callback=callbackfunction';body[0].appendChild(script);</script>

結果和上面一樣。

 js跨域請求數據的3種常用的方法

2.jQuery中的$.ajax()

   設想,當你想要使用jQuery請求跨域數據的時候,比如(還是剛才的index.html):

<script src="js/jquery-1.11.3.js"></script><script>$(function(){  $.get('http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js',function(data){    console.log(data);  })})</script>

瀏覽器還是無情的報錯,因為你這個url是不同的域名下的。

那么既然jQuery封裝了ajax方法,我們為何不用,人家封裝好了,你不用,豈不是找罪受么,代碼如下:

<script src="js/jquery-1.11.3.js"></script><script>$(function(){  $.ajax({    async: false,    type: "GET",    dataType: 'jsonp',    jsonp: 'callback',    jsonpCallback: 'callbackfunction',    url: "http://i2.mediapower.mobi/adpower/vm/Bora/js/test.js",    data: "",    timeout: 3000,    contentType: "application/json;utf-8",    success: function(msg) {      console.log(msg);    }  });})</script>

js跨域請求數據的3種常用的方法

當你作了這么多挑逗工作之后,瀏覽器很爽快的給出了反應,表示它很爽,返回給了你一個對象,里面是遠端不同域名下test.js中的數據。
3.postMessage+iframe

   postMessage是HTML5中新增加的功能,比如我在本地域名下,http://192.168.1.152:8080/webs/i.mediapower.mobi/wutao/testa.html中的testa.html中:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>testa</title></head><script>window.onload = function() {  document.getElementById('ifr').contentWindow.postMessage('我是要經過傳遞的數據', 'http://i2.mediapower.mobi/adpower/vm/Bora/testb.html');};</script><body>  <iframe id="ifr" src="http://i2.mediapower.mobi/adpower/vm/Bora/testb.html"></iframe></body></html>

此時,我遠端的testb.html里面的內容應該是這樣:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>testb</title></head><script>window.addEventListener('message', function(event) {  // 通過origin屬性判斷消息來源地址  if (event.origin === 'http://192.168.1.152:8080') {    alert(event.data);   }}, false);</script><body>123</body></html>

保存代碼,打開本地testa.html,訪問遠端的testb.html

js跨域請求數據的3種常用的方法

總結了一下,jQuery還是非常的好用的,基本上js能干的事情,jQuery都能非??焖俨⑶腋咝У耐瓿?,當然,原生js也能解決很多事情,而HTML5的新功能也非常強大,這幾種方法,我還是首推jQuery。

以上就是為大家分享的3種常用的js跨域請求數據的方法,希望對大家的學習有所幫助。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合伊人色综合网| 国产美女扒开尿口久久久| 中文字幕亚洲字幕| 最新国产成人av网站网址麻豆| 懂色av中文一区二区三区天美| 97精品国产97久久久久久| 538国产精品一区二区免费视频| 久久久久久久久久久免费精品| 成人国产精品久久久| 欧美大全免费观看电视剧大泉洋| 国产精品91久久久久久| 欧美电影免费播放| 在线国产精品播放| 国产免费亚洲高清| 日韩欧美国产免费播放| 中文字幕一区二区精品| 美女视频久久黄| 日韩中文字幕国产| 九九热最新视频//这里只有精品| 日韩精品中文字幕在线播放| 国产日韩中文在线| 欧美专区在线播放| 日韩高清av在线| 午夜精品一区二区三区在线| 国产精品久久久久不卡| 久久久久久12| 成人国产精品av| 亚洲第一级黄色片| 国产91精品久久久久| 国产成人亚洲综合| 国产精品高潮呻吟久久av野狼| 欧美日韩成人在线播放| 国产亚洲美女精品久久久| 国产激情综合五月久久| 亚洲www永久成人夜色| 日韩免费av一区二区| 日韩精品免费在线视频观看| 国产性猛交xxxx免费看久久| 国产精品成人av在线| www.午夜精品| 国产精品国产福利国产秒拍| 欧美一区二区三区四区在线| 亚洲精品第一页| 久久99精品久久久久久琪琪| 亚洲日本中文字幕免费在线不卡| 国产精品美腿一区在线看| 欧美黑人极品猛少妇色xxxxx| 成人有码在线播放| 国产日韩精品一区二区| 亚洲国产另类久久精品| 2019亚洲男人天堂| 欧美激情18p| 国产欧美日韩精品专区| 性欧美长视频免费观看不卡| 日韩久久免费电影| 欧美电影免费在线观看| 色香阁99久久精品久久久| 久久久久久国产精品美女| 91免费福利视频| 日韩成人中文字幕| 久久五月情影视| 成人免费网视频| 7777精品视频| 久久久爽爽爽美女图片| 亚洲人精品午夜在线观看| 国产精品久久久久久久久久| 久久精品人人做人人爽| 国产主播在线一区| 亚洲精品一区二区三区不| 亚洲电影免费在线观看| 国产精品视频内| 成人国产精品久久久| 久久久爽爽爽美女图片| 久久久久久久久国产| 成人精品久久一区二区三区| 久久91精品国产91久久久| 欧美日本亚洲视频| 久久在线观看视频| 亚洲乱码国产乱码精品精| 国产精品综合网站| 97在线看免费观看视频在线观看| 亚洲精品成人久久电影| 91麻豆国产精品| 日韩中文字幕视频在线观看| 国产精品激情av电影在线观看| 国产欧美一区二区三区在线看| 欧美日韩在线视频一区二区| 欧美猛交ⅹxxx乱大交视频| 日本aⅴ大伊香蕉精品视频| 欧美精品videossex性护士| 国产91色在线| 国产日韩欧美在线观看| 国产视频在线观看一区二区| 97视频在线观看亚洲| 国产精品美女久久| 欧美极品欧美精品欧美视频| 国产精品爽爽ⅴa在线观看| 麻豆一区二区在线观看| 国产精品永久在线| 国产在线精品自拍| 亚洲欧美国产va在线影院| 国产69精品久久久久99| 伦理中文字幕亚洲| 欧美精品video| 国产精品免费一区| 国产精品久久久久久久9999| 国产精品日韩在线| 国产精品免费视频xxxx| 国产精品v片在线观看不卡| 欧美日本高清一区| 欧美与欧洲交xxxx免费观看| 亚洲成人av片在线观看| 国产一区欧美二区三区| 2019国产精品自在线拍国产不卡| 国产999在线| 日本韩国在线不卡| 久久久久久久久久国产精品| 国产亚洲精品久久久| 在线播放国产一区中文字幕剧情欧美| 亚洲国产精品久久久| 91高清视频免费观看| 亚洲人成电影网站色www| 欧美视频一区二区三区…| 欧美乱妇高清无乱码| 成人a级免费视频| 久久久精品国产一区二区| 精品久久久久久中文字幕一区奶水| 国产美女扒开尿口久久久| 亚洲香蕉伊综合在人在线视看| 国产精品久久久久久中文字| 91精品久久久久久综合乱菊| 性夜试看影院91社区| 在线精品国产欧美| 日韩电影免费在线观看中文字幕| 国产精品电影网站| 在线观看国产成人av片| 欧洲永久精品大片ww免费漫画| 亚洲成人在线网| 精品亚洲一区二区三区| 日韩欧美在线视频观看| 91av在线播放| 欧美激情一区二区三区成人| 欧美性猛交xxxx久久久| 日韩电影在线观看中文字幕| 日韩精品极品毛片系列视频| 日韩中文字幕免费| 亚洲欧美激情精品一区二区| 在线激情影院一区| 日本欧美在线视频| 亚洲影院色在线观看免费| 国产福利视频一区| 国产中文欧美精品| 欧美极品少妇xxxxⅹ裸体艺术| 欧美日韩另类视频| 5566日本婷婷色中文字幕97| 亚洲欧美中文日韩在线v日本| 国产精品久久久久久久av电影| 欧美大片在线影院| 久久久久久久国产精品视频| 日韩经典一区二区三区| 91精品久久久久久久久中文字幕| 亚洲欧美激情视频| 韩国v欧美v日本v亚洲| 亚洲字幕在线观看|