首页 > Web开发 > 详细

jsonp

时间:2016-10-22 00:00:44      阅读:264      评论:0      收藏:0      [点我收藏+]


<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <script>
            
            //JSONP:域(协议、域名、端口号)有一个不同就不同。所以不能直接跨域访问别的服务器上的数据
            //JSONP是跨域手段之一
            
            //JSONP(JSON with padding)是被包含在函数调用中的JSON. success(‘{"name":"zhangsan"}‘)
            //jsonp的原理,是利用外链外域的js的时候,能够不出错,从而实现跨域访问的
            //解决办法是创建一个script标签,然后把网址作为src的属性值赋值
            
            //解决数据的问题,写一个回调函数,将数据作为参数传进去
            //然后网址写成带参数的方式
            
            //这里为了测试,手动修改weather.js文件,用函数名加上括号把原来weather.js文件
            //包起来,这就是JSONP(被包含在函数调用中的JSON),这样子就能得到数据了
            
            //注意,实际工作中,不需要我们手动修改weather.js文件,我们只需要将网址改成原来网址加上
            //?callback=success就可以,后端工程师会处理好,将数据改成是
            //success(‘{"city":‘SH‘,"mintemp":-1,"maxtemp":3,"wind":3, "pm2_5": 50}‘)
            //形式的。
            
            function jsonp(){
                var _script = document.createElement("script");
                //为了取得服务器的数据,给url加上参数?callback=success(callback=加上函数名)
                _script.src = "http://localhost/AJAX/weather.js?callback=success";
                document.body.appendChild(_script);
            }
            
            //reponse是服务器传回来的数据,reponse就是json字符串
            function success(response){
                var obj = eval("("+response+")"); //用eval方法转换成json对象
                //console.log(obj);
                 // alert("城市"+obj.city+"最低温度"+obj.mintemp);
                 var oDiv1 = document.getElementById("div1");
                 oDiv1.innerHTML = "城市 "+obj.city+" 最低温度 "+obj.mintemp;
                 //这里获取到了数据,进一步操作数据做的事,可以写在这个函数里。
            }
                
            
        </script>
        
    </head>

    <body>
        <div id="div1"></div>
        这是第一个网页,测试JSONP
        <button onclick="jsonp()">这是一个跨域请求,请求天气预报的数据</button>
    </body>

</html>

jsonp

原文:http://www.cnblogs.com/yuejie/p/5986326.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!