• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    原生js的ajax和解決跨域的jsonp(實例講解)

    來源:懂視網 責編:小采 時間:2020-11-27 22:27:51
    文檔

    原生js的ajax和解決跨域的jsonp(實例講解)

    原生js的ajax和解決跨域的jsonp(實例講解):最近慢慢感覺,學再多框架,庫,都不如老老實實先把基礎弄扎實了。 不說廢話,先上一個用ajax請求下本地的一個.txt文件 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <t
    推薦度:
    導讀原生js的ajax和解決跨域的jsonp(實例講解):最近慢慢感覺,學再多框架,庫,都不如老老實實先把基礎弄扎實了。 不說廢話,先上一個用ajax請求下本地的一個.txt文件 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <t

    最近慢慢感覺,學再多框架,庫,都不如老老實實先把基礎弄扎實了。

    不說廢話,先上一個用ajax請求下本地的一個.txt文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <script>
     window.onload =function(){
     var oBtn = document.getElementById('btn');
    
     oBtn.onclick = function(){
     //創建XHR對象
     var xhr = new XMLHttpRequest();
    
     //請求的方式,地址,是否異步
     xhr.open('get','test.txt',true);
    
     //請求的確定操作,初始化,相當于搜索時,敲擊的回車
     xhr.send(null);
    
     //請求的readyState每變化一次就執行一次onreadystatechange函數
     //其中readyState表示的是:請求/響應過程的當前活動階段
     //readyState有如下取值
     /*
     * 0:未初始化,尚未調用send()方法
     * 1: 啟動
     * 2:發送
     * 3:接收
     * 4:完成
     */
     xhr.onreadystatechange =function(){
     if(xhr.readyState ==4){
     alert(xhr.responseText);
     }
     }
     };
    
    
     };
     </script>
    </head>
    <body>
    <input type="button" id="btn" value="show">
    </body>
    </html>

    執行效果如下,點擊show就會通過ajax請求本地的.txt文件。

    代碼比較簡單,加上注釋,相信很容易就看得懂。

    但是工作中我們經常會請求其他域下的資源(因為同源策略),這個時候就遇到了跨域(協議,端口,域名任何一個不同就算是跨域)。

    解決跨域的一種常用辦法就是jsonp,雖然他有局限性(只支持get請求),不過優點是兼容老式瀏覽器(不過現在好像很少有人在意老式瀏覽器了)。

    jsonp的基本原理:就是通過動態創建script標簽,script標簽的src是沒有跨域限制的。

    接下來上一個類似百度搜索下拉的頁面

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <style>
     *{
     margin: 0;
     padding: 0;
     }
     input{
     width:300px;
     height:30px;
     border:1px solid lightgray;
     margin-top: 150px;
     margin-left: 200px;
     padding-left: 5px;
     }
     ul{
     width:307px;
     list-style: none;
     margin-left: 200px;
     display: none;
     }
     li{
     height:30px;
     border: 1px solid lightgray;
     line-height: 30px;
     padding-left: 5px;
     }
     </style>
     <script>
     function callbackD(response){
     var oUl = document.getElementById('ulList');
     var html='';
     if(response.s.length !=0){
     oUl.style.display='block';
     for(var i = 0;i<response.s.length;i++){
     html+='<li>'+response.s[i]+'</li>'
     }
     }
     oUl.innerHTML = html;
     }
     </script>
     <script>
     window.onload = function(){
     //獲取dom元素
     var oData = document.getElementById('inputSearch');
     var oUl = document.getElementById('ulList');
    
     //鍵盤按下后抬起觸發事件(onkeyup)
     oData.onkeyup = function(){
     if(oData.value != ''){
     //創建標簽(createElement)
     var script = document.createElement("script");
     //添加地址
     script.src='http://unionsug.baidu.com/su?wd='+this.value+'&p=3&cb=callbackD';
     //添加給body的(成為body包涵的孩子)
     document.body.appendChild(script);
     }else{
     oUl.style.display='none';
     }
    
     }
    
     };
     </script>
    </head>
    <body>
    <input type="text" id="inputSearch">
    <ul id="ulList">
     <li>123</li>
    </ul>
    </body>
    </html>

    執行效果如下:

    代碼也相對比較簡單,加上代碼的注釋,一定很容易看懂,這就是解決跨域的一種常用辦法,其他有反向代理,CORS啊等等,等我學好再整理出來。

    以上這篇原生js的ajax和解決跨域的jsonp(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    原生js的ajax和解決跨域的jsonp(實例講解)

    原生js的ajax和解決跨域的jsonp(實例講解):最近慢慢感覺,學再多框架,庫,都不如老老實實先把基礎弄扎實了。 不說廢話,先上一個用ajax請求下本地的一個.txt文件 <!DOCTYPE html> <html lang=en> <head> <meta charset=UTF-8> <t
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 99久久精品免费国产大片| 精品视频一区二区三区| 777国产盗摄偷窥精品0OOO| 亚洲精品无码高潮喷水在线| 99精品视频在线观看婷| 99久久精品午夜一区二区 | 久久久久成人精品无码| 国产精品国产三级国产专播| 亚洲精品无码99在线观看| 国产精品亚洲不卡一区二区三区| 国产精品日韩欧美制服| 国产精品igao视频网| 无码精品久久久久久人妻中字 | 国产精品99久久精品| 精品人妻码一区二区三区| 亚洲乱码日产精品a级毛片久久| 久久久久久久亚洲精品| 精品国产青草久久久久福利 | 亚洲精品国精品久久99热| 鲸鱼传媒绿头鱼实验室之炮机测评日韩精品一级毛 | 亚洲综合无码精品一区二区三区| 国产三级精品三级在线观看| 99久久精品国产一区二区三区| 精品综合久久久久久97超人| 69堂国产成人精品视频不卡| 国产乱人伦偷精品视频AAA| 久久精品亚洲日本波多野结衣| 欧美精品欧美人与动人物牲交 | 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 尤物yw午夜国产精品视频| 国产三级精品三级在专区| 麻豆亚洲AV永久无码精品久久| 真实国产乱子伦精品视频| 日韩精品无码Av一区二区| 欧美久久久久久午夜精品 | 9久久9久久精品| 国产精品久久久久…| 久久久精品一区二区三区| 日韩精品国产自在久久现线拍| 久久亚洲国产精品一区二区| 永久免费精品视频|