jsonp跨域请求

Posted 小飞博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsonp跨域请求相关的知识,希望对你有一定的参考价值。

跨域是什么?为什么我们需要跨域?

跨域是指浏览器访不能问另外一个网站的脚本,这是由于浏览器的同源策略造成的,同时也是浏览器施加给javascript的安全限制。

但是事实上,用户浏览网站是避免不了跨域请求的,所以才需要跨域来解决这个问题。

我最熟悉的是jsonp跨域:因此先贴上jsonp跨域的例子。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>jsonp跨域</title>
 6 </head>
 7 <style>
 8     *{margin:0;padding: 0;list-style: none;}
 9     #wrap{
10         width: 400px;
11         margin:100px auto;
12         border: 1px solid orange;
13     }
14     #wrap #txt{
15         width: 398px;
16         height: 40px;
17         font-size: 20px;
18         border: 1px solid orange;
19         outline: none;
20     }
21     #wrap #ul1{
22         width: 393px;
23     }
24     #wrap #ul1 li{
25         width: 393px;
26         height: 40px;
27         line-height: 40px;
28     }
29     #wrap #ul1 li a{
30         display: block;
31         text-decoration: none;
32         color: #000;
33     }
34     #wrap #ul1 li a:hover{
35         background: cyan;
36         color: #fff;
37     }
38 </style>
39 <body>
40     <div id="wrap">
41         <input type="text"  id="txt">
42         <ul id="ul1">
43         </ul>
44     </div>
45 </body>
46 <script>
47     //data数据格式:{q: "点", p: false, s: Array(10)}
48     function callback(data) {
49         //console.log(data);
50     var oUl = document.getElementById(ul1);
51     var html = ‘‘;
52     if (data.s.length) {
53         oUl.style.display = block;
54         for (var i=0; i<data.s.length; i++) {
55             html += <li><a target="_blank" href="http://www.baidu.com/s?wd=+data.s[i]+">+ data.s[i] +</a></li>;
56         }
57         oUl.innerHTML = html;
58     } else {
59         oUl.style.display = none;
60     }
61     
62 }
63 
64 // ‘&cb=callback‘  里的callback是回调函数
65 
66     window.onload=function(){
67         var txt=document.getElementById(txt);
68         var oUl=document.getElementById(ul1);
69         txt.onkeyup=function(){
70             if(this.value!=‘‘){
71                 var Script=document.createElement(script);
72                 Script.src=http://suggestion.baidu.com/su?wd=+this.value+&cb=callback;
73                 document.body.appendChild(Script);
74             }else{
75                 oUl.style.display=none;
76             }
77 
78         };
79     };
80 </script>
81 </html>

jsonp跨域相对而言还是简单点,容易理解吧。后续还会更新跨域方面方法。

以上是关于jsonp跨域请求的主要内容,如果未能解决你的问题,请参考以下文章

jsonp实现数据跨域请求

jsonp实现跨域请求

jsonp跨域请求php接口

跨域请求之jsonp的实现方式

JSONP跨域 ajax请求

前端跨域之Jsonp实现原理及.Net下Jsonp的实现