美文网首页
谈谈 Jsonp

谈谈 Jsonp

作者: MrAlexLee | 来源:发表于2019-12-28 00:17 被阅读0次

Jsonp

首先来了解一下JSON,JSON 是一种轻量级的数据交换格式,简单的说,JSON 可以将 JS 对象中表示的一组数据转换为字符串,然后就可以在网或者程序之间轻松的传递这个字符串,并在需要的时候将它还原为各个编程语言所支持的数据格式。

那么 Jsonp 就是 json 的一种应用方式。众所周知,Ajax 请求普通文件存在跨域无权限访问的问题,但是在 web 页面上加载 script 标签请求 src 里面的内容时,是拥有跨域的能力的,于此同时还有 img 标签,iframe 标签。

举个栗子:

<head>  
   <title></title>  
   <script type="text/javascript">  */  
       // 得到航班信息查询结果后的回调函数  
       var flightHandler = function(data){  
           alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');  
       };  
       // 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码)  
       var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";  
       // 创建script标签,设置其属性  
       var script = document.createElement('script');  
       script.setAttribute('src', url);  
       // 把script标签加入head,此时调用开始  
       document.getElementsByTagName('head')[0].appendChild(script);   
   </script>  
</head>    

jsonp在 jQuery里面的使用

<head>  
  <title>跨域测试</title>  
  <script src="js/jquery-1.7.2.js"></script>  
  <script>  
    function showData (data) {          //自定义的callback函数  
        console.info("调用showData");                
    }  
    $(document).ready(function () {  
        $("#btn").click(function () {  
            $.ajax({  
                url: "http://localhost:9090/student",  
                type: "GET",  
                dataType: "jsonp",          //指定服务器返回的数据类型  
                //jsonp: "theFunction",     //指定参数名称  
                jsonpCallback: "showData",  //指定自定义callback  
                success: function (data) {      //success是$.ajax自动创建的回调函数  
                    console.info("调用success");  
                    var result = JSON.stringify(data);  
                    $("#text").val(result);  
                }  
            });  
        });   
    });      
</script>  
</head>  

相关文章

网友评论

      本文标题:谈谈 Jsonp

      本文链接:https://www.haomeiwen.com/subject/tgmjoctx.html