zoukankan      html  css  js  c++  java
  • jsonp


    <!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>

  • 相关阅读:
    04.sys
    leetcode算法-加油站
    Spring动态AOP
    (java反射-JDK动态代理)+CGLIB动态代理
    java反射-基础语法
    leetcode算法-验证回文串
    leetcode算法-盛最多水的容器
    leetcode算法-两数之和
    leetcode算法-三数之和
    leetcode算法-最长和谐子序列
  • 原文地址:https://www.cnblogs.com/yuejie/p/5986326.html
Copyright © 2011-2022 走看看