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

首頁 > 編程 > JavaScript > 正文

jsonp跨域及實現百度首頁聯想功能的方法

2019-11-19 13:06:35
字體:
來源:轉載
供稿:網友

什么是跨域呢?

比如說ajax必須在自己的域(名)之下,才能進行異步的請求,如果不是在同一個域之下就不能進行請求,會報錯。比如說我們用ajax去請求騰訊的API如果我們的這個域不在騰訊那個接口的'白名單'里面,騰訊的接口就會拒絕給我返回數據。但是大多數情況下,我們不可能每次都去去相應的網站申請一個'白名單',這個時候我們就要用到跨域這種方法,跨域有很多方式比如說用iframe但是這種的可操作性太差了,不能操作frame里面的DOM元素。當先最流行的一種的方式是使用jsonp這種方式。

什么是JSONP

jsonp是英文為json with padding的簡稱。簡單地來說jsonp就是script標簽,通常的我們把script,link,img叫做資源標簽,也就是能連接資源的意思。只要記住了jsonp就是script標簽就好了。下面我們來說下一部分:

script標簽怎么引入數據

我們如果知道操作系統并不是靠后綴名來識別一個文件的,是靠文件里面的內容來識別的,后綴名知識更利于第三方的軟件進行查看。比如說我們把a.txt改為a.png那么我門用圖片查看器打開的時候也是顯示的圖片不存在的(如果學過Linux的同學會更好的理解)?!居信d趣的同學可以嘗試這把一個js文件的后綴改為其他格式再引入試試】。那么我們就解決的script如何引入數據的問題了,也就是說我們可以用script標簽引用一個json或者.php的資源文件.

就算能引入資源,那么資源怎么使用呢

先舉個簡單地例子,比如我們在一個a.json定義了下面的一個變量

"text";

我們在HTML中去加載它,然后去執行,如下代碼:

<script src="./a.json"></script><script>alert(str); //text</script>

這樣是能正確執行了,但是我們也知道json數據中并沒有定義什么變量和方法的,這個就好像下面的方式:

var str="text";

我們在HTML中去加載它,然后去執行,如下代碼:

<script src="./a.json"></script><script>alert(str); //error</script>

這樣顯然是會報錯的,那么跨域解決之后就要解決怎么使用這個資源的問題了。

我們先和后臺定義一個方式,把所有的數據作為一個函數的參數去調用函數,當然這個函數是我們預先定義好的了,如下面的格式:

function solve(data){//使用數據}<script src="./a.json"></script>

下面我們來看看a.json是怎么定義的

solve(100);solve({});//相當于a.json里面的數據作為參數傳遞到了solve函數里面,然后,在solve函數里面操作這個數據就可以了

資源里面要有幾個方法

先看下面的例子,當我們引入一個PHP動態資源的時候

<?php$t = isset($_GET['t']) ? $_GET['t'] : 'num';$a = "111";$b = "aaa";if ($t == 'num') {$data = json_encode($a);} else {$data = json_encode($b);}echo solve($data)

比如我們有兩個按鈕一個按鈕執行的時候要求,收到$a另一個要求收到$b,那我們應該怎么搞?在pho文件中加一個solve()?這樣雖然是可取的,如果有n種請求呢,只要加n個方法,這樣肯定是不行的。我們怎么解決呢?有一個很好的方法就是在請求的時候就把函數名字加進去,例如下面的方式:

<?php$t = isset($_GET['t']) ? $_GET['t'] : 'num';$callback = isset($_GET['callback']) ? $_GET['callback'] : 'fn1';$arr1 = array('111111','22222222','33333333','4444444','555555555555555555555');$arr2 = array('aaaaaaaaaaaa','bbbbbbbb','cccccccccccc','ddddddddd','eeeeeeeeeeee');if ($t == 'num') {$data = json_encode($arr1);} else {$data = json_encode($arr2);}echo $callback.'('.$data.');';

這樣就能很好的規避這個問題了。

好了,如果上面的東西你都連接了,那么你就差不多知道什么是跨域和怎么解決跨域了,那么光說不練還是不好的,我們就用百度的搜索API來簡單聯系一下。

當然啦,還有一個重要的問題,jsonp加載的時候應該是動態加載的,我們應該用代碼創建。

jsonp跨域實現百度首頁聯想功能

主要思路是利用jsonp的跨域,使用百度后臺接口,根據input框的內容,向后臺拿數據,然后展示在搜索框下面,并且li使用的是a標簽包裹,基本實現了和百度首頁收縮然后跳轉的功能

結果截圖

  <script>   var timer = null // 防抖動   var domInput = document.getElementById('input')   var domul = document.getElementsByTagName('ul')[0]   domInput.oninput = function (e) {    clearTimeout(timer) //防抖動    timer = setTimeout(function () {     var domScript = document.createElement('script')     domScript.src = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd='+ e.target.value +'&cb=jsonpCb' // jsonp實現     document.body.appendChild(domScript)    }, 100)   }   function jsonpCb (data) { // jsonp的回調函數的實現    let result = ''    data.s.forEach(element => {     result += '<li><a href= ' + 'https://www.baidu.com/s?wd=' + element + '>' + element +'</a></li>'    });    domul.innerHTML = result   }  </script> 

可實現點擊聯想詞跳轉

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲香蕉成人av网站在线观看| 最新69国产成人精品视频免费| 一区二区三区亚洲| 亚洲第一在线视频| 久久久国产在线视频| 亚洲天堂免费观看| 日韩精品视频观看| 中文字幕九色91在线| 国产69精品久久久| 91香蕉嫩草影院入口| 国产成人在线一区| 国产精品黄视频| 欧美日韩国内自拍| 亚洲欧美综合v| 欧美国产日韩一区二区三区| 日韩免费观看av| 91精品国产一区| 成人网在线免费观看| 91av在线视频观看| 亚洲第一区第二区| 国产精品永久免费观看| 国内外成人免费激情在线视频| 国产一区二区黄| 久久91亚洲精品中文字幕| 国产精品网站大全| 国产精品成人在线| 国产亚洲精品美女久久久| 2025国产精品视频| 欧美高清视频在线播放| 欧美性受xxxx黑人猛交| 97精品在线视频| 欧美激情亚洲综合一区| 狠狠躁夜夜躁人人躁婷婷91| 国产精品中文在线| 秋霞午夜一区二区| 成人黄色免费在线观看| 久久久久亚洲精品国产| 色综合久综合久久综合久鬼88| 日日摸夜夜添一区| 菠萝蜜影院一区二区免费| 亚洲va码欧洲m码| 97久久伊人激情网| 中文字幕久久久av一区| 欧美精品电影在线| 亚洲精品乱码久久久久久金桔影视| 国产精品极品美女粉嫩高清在线| 九九热最新视频//这里只有精品| 久久久久久国产精品美女| 国产人妖伪娘一区91| 亚洲人免费视频| 久久久久久久久久久人体| 亚洲wwwav| 欧美性生交大片免网| 高清欧美性猛交xxxx黑人猛交| 欧美日韩亚洲国产一区| 韩国三级电影久久久久久| 美女av一区二区三区| 欧美精品久久久久久久免费观看| 欧美午夜电影在线| 不卡毛片在线看| 国产女人18毛片水18精品| 精品久久在线播放| 97成人在线视频| 日韩欧美国产激情| 亚洲视频一区二区| 日韩精品视频在线免费观看| 精品日韩美女的视频高清| 在线播放日韩精品| 欧美一区二三区| 亚洲欧洲一区二区三区在线观看| 国产日韩在线免费| 国产日本欧美一区二区三区在线| 夜夜嗨av一区二区三区免费区| 成人午夜激情免费视频| 正在播放亚洲1区| 国产一区二区欧美日韩| 国产视频在线观看一区二区| 亚洲精品一区久久久久久| 欧美三级免费观看| 亚洲欧美激情另类校园| 亚洲精品一区中文字幕乱码| 国产精品对白刺激| 夜夜狂射影院欧美极品| 91精品国产综合久久男男| 中文字幕亚洲综合久久筱田步美| 成人a视频在线观看| 欧美国产极速在线| 久久综合五月天| 性欧美在线看片a免费观看| 九九热最新视频//这里只有精品| 久久免费视频网站| 亚洲精品videossex少妇| 一区二区福利视频| 亚洲va久久久噜噜噜| 51午夜精品视频| 国产在线视频一区| 91久久精品国产91性色| 久久久久久久久爱| 黑人巨大精品欧美一区二区免费| 欧美黄色片免费观看| 欧美www视频在线观看| 欧美激情影音先锋| 亚洲黄色www网站| 亚洲老司机av| 久久露脸国产精品| 91在线精品播放| 久久伊人精品一区二区三区| 国产视频亚洲精品| 欧美视频13p| 欧美成人免费全部| 久久人人爽人人爽人人片亚洲| 国产97人人超碰caoprom| 久久久久久欧美| 国产精品视频内| 亚洲国产成人久久综合一区| 97免费视频在线播放| 国产不卡av在线免费观看| 国产精品一区二区在线| 亚洲成人激情在线| 粉嫩av一区二区三区免费野| 国产精品一二区| 亚洲伊人久久大香线蕉av| 2019中文字幕在线观看| 日韩美女视频在线观看| 久久久久久久国产| 中文字幕日韩av电影| 亚洲第一区在线| 成人免费网站在线观看| 欧美黄色三级网站| 九九视频直播综合网| 久久视频在线免费观看| 亚洲欧美制服综合另类| 国产一区二区日韩精品欧美精品| 91精品美女在线| 在线观看日韩欧美| 亚洲欧美精品中文字幕在线| 日韩一区二区精品视频| 欧美尺度大的性做爰视频| 欧美激情视频在线免费观看 欧美视频免费一| 91av福利视频| 97欧美精品一区二区三区| 懂色av一区二区三区| 插插插亚洲综合网| 欧美裸体xxxx极品少妇| 国产一区视频在线播放| 久久精品久久久久久| 亚洲第一视频网站| 色偷偷综合社区| 国产精品视频自拍| 久久亚洲综合国产精品99麻豆精品福利| …久久精品99久久香蕉国产| 欧美麻豆久久久久久中文| 中文字幕欧美日韩| 久久精品亚洲一区| 中文字幕综合一区| 久久免费精品视频| 国产精品黄页免费高清在线观看| 亚洲男人天堂2024| 国产91在线播放| 欧美激情免费观看| 国产日韩欧美成人| 九九精品在线播放| 国产精品久久久久久久电影| 亚洲另类激情图|