zoukankan      html  css  js  c++  java
  • 封装jsonp

    jsonp的原理:

        就是利用<script>标签没有跨域的“漏洞”来达到与第三方通讯的目的,当需要通讯时,本站脚本创建一个script标签,地址指向第三方API

      地址并提供一个回调函数来接收数据,第三方产生相应为json数据的包装,这样浏览器会调用callback()函数并传递解析后的json对象为参数。。

    jsonp的核心:

        动态创建添加script标签来调用服务器提供的js脚本。

    别的不多说,直接上代码:

      HTML代码;

    1 <body>
    2         <input type="text" name="text" id="text" value="" />
    3         <div id="div"></div>
    4     </body>

      js代码:

     1 <script>
     2             //封装一个jsonp方法
     3             function jsonp(json){
     4                 //判断路径是否正确
     5                 if(!json.url){
     6                     alert("请输入正确路径");
     7                     return;
     8                 }
     9                 //设置默认值
    10                 json.data = json.data || {};
    11                 json.cbName = json.cbName || 'cb';
    12                 
    13                 
    14                 var fnName = "show" + Math.random();
    15                 fnName = fnName.replace(".","");
    16                 window[fnName] = function(json2){
    17                     json.success && json.success (json2);
    18                     oHeade.removeChild(oScript);
    19                 }
    20                 json.data[json.cbName] = fnName;
    21                 var arr = [];
    22                 for(name in json.data){
    23                     arr.push(name + '=' + json.data[name]);
    24                 }
    25                 
    26                 //创建script标签
    27                 var oScript = document.createElement("script");
    28                 //设置script的src属性
    29                 oScript.src = json.url + '?' + arr.join("&");
    30                 //获取head标签
    31                 var oHeade = document.getElementsByTagName("head")[0];
    32                 //将动态创建的script标签添加到head中
    33                 oHeade.appendChild(oScript);
    34             }
    35             
    36             
    37             window.onload = function(){
    38                 var oText = document.getElementById("text");
    39                 oText.onkeyup = function(){
    40                     jsonp({
    41                         url:'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',
    42                         data:{
    43                             wd:oText.value
    44                         },
    45                         success:function(json){
    46                             var oDiv = document.getElementById("div").innerHTML = json.s;
    47                         }
    48                     });
    49                     
    50                 }
    51             }
    52             
    53             
    54         </script>

    这就封装好了一个jsonp方法。。。

     

  • 相关阅读:
    Vue 学习笔记之 —— 组件(踩了个坑)
    Vue 学习笔记之 —— 表单输入绑定
    js cookie
    python中线程、进程和协程的区别
    设计模式
    Mysql从入门到精通整理
    如何处理缓存失效、缓存穿透、缓存并发等问题
    mysql 查询当天、本周,本月,上一个月的数据
    Mysql分表和分区的区别、分库分表介绍与区别(转)
    mysql数据库死锁的产生原因及解决办法
  • 原文地址:https://www.cnblogs.com/user-5253/p/7082665.html
Copyright © 2011-2022 走看看