首页 > 代码库 > 封装jsonp
封装jsonp
jsonp的原理:
就是利用<script>标签没有跨域的“漏洞”来达到与第三方通讯的目的,当需要通讯时,本站脚本创建一个script标签,地址指向第三方API
地址并提供一个回调函数来接收数据,第三方产生相应为json数据的包装,这样浏览器会调用callback()函数并传递解析后的json对象为参数。。
jsonp的核心:
动态创建添加script标签来调用服务器提供的js脚本。
别的不多说,直接上代码:
HTML代码;
1 <body> 2 <input type="text" name="text" id="text" value=http://www.mamicode.com/"" /> 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 = http://www.mamicode.com/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 = http://www.mamicode.com/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方法。。。
封装jsonp
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。