ajax 跨域解决之JSONP (JSON with Padding)

跨域的问题

域:域名

跨域请求(访问):一个域名下的文件请求另外一个域名下的资源,就产生了跨域

三种方法:

 

 

 

ajax跨域搜索实例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            dl{
                border-bottom: 1px solid royalblue;
            }
        </style>
        <script>
        function fn1(data){
            
            var oMsg = document.getElementById("msg");
            var oList = document.getElementById("lists");
            
            console.log(data);
            
            oMsg.innerHTML = data.title.$t + ':' + data['opensearch:totalResults'].$t;
            
            var oEntry = data.entry;
            var html = '';
            
            for(var i=0;i<oEntry.length;i++){
                html += '<dl><dt>'+oEntry[i].title.$t+'</dt><dd><img src="'+oEntry[i].link[2]['@href']+'"/></dd></dl>';
                
            }
            alert(html);
            oList.innerHTML = html;
            
        }
        
        window.onload = function(){
            var oQ = document.getElementById("q");
            var oBtn = document.getElementById("btn");
            var oMsg = document.getElementById("msg");
            var oList = document.getElementById("lists");
            
            oBtn.onclick = function(){
                
                if(oQ.value != ''){
                    //alert(1);
                    var oScript = document.createElement('script');
                    oScript.src = 'http://api.douban.com/book/subjects?q='+oQ.value+'&alt=xd&callback=fn1';
                    
                document.body.appendChild(oScript);
                }
            }
            
        }
        </script>
    </head>
    <body>
        <input id="q" type="text"/>
        <input type="button" id="btn" value="搜索" />
        <p id="msg"></p>
        <hr />
        <div id="list">
            
        </div>
        
    </body>
</html>

这里还有点小问题

 

 

jsonp的产生:

1.AJAX直接请求普通文件存在跨域无权限访问的问题,不管是静态页面也好.

2.不过我们在调用js文件的时候又不受跨域影响,比如引入jquery框架的,或者是调用相片的时候

3.凡是拥有scr这个属性的标签都可以跨域例如<script><img><iframe>

4.如果想通过纯web端跨域访问数据只有一种可能,那就是把远程服务器上的数据装进js格式的文件里.

5.而json又是一个轻量级的数据格式,还被js原生支持

6.为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback 参数给服务端,

 

 

 

分页查找思路:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值