美文网首页
对jsonp的理解

对jsonp的理解

作者: wuxuan94 | 来源:发表于2017-10-26 17:40 被阅读0次

1.jsonp不是json
jsonp是一种跨域数据交互协议,而json是一种数据格式。
2.jsonp不是ajax
ajax和jsonp在调用方式很像,但ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心是动态添加<script>标签来调用服务器提供的js脚本。
用jQuery调用jsonp

<!DOCTYPE>
 <html>
 <head>
     <title>Untitled Page</title>
     <script type="text/javascript" src=jquery.min.js"></script>
     <script type="text/javascript">
     jQuery(document).ready(function(){ 
        $.ajax({
             type: "get",
             async: false,
             url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998",
             dataType: "jsonp",
             jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
             jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
             success: function(json){
                 alert(json);
             },
             error: function(){
                 alert('fail');
             }
         });
     });
     </script>
     </head>
  <body>
  </body>
 </html>

自定义回调函数flightHandler在jQuery作用下归入了ajax success属性方法来调用了。
总而言之,jsonp不是ajax的一个特例,哪怕jquery等巨头把jsonp封装进了ajax。
3.jsonp的原理
Web页面上调用js文件时则不受是否跨域的影响(凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>)
客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。

页面可以调用远程js文件并传个参数过去,服务端提供动态js脚本接收参数,并根据参数需求
返回相应的数据包裹在指定的回调函数名里。
例如返回航班信息

<!DOCTYPE>
<html>
<head>
    <title></title>
    <script type="text/javascript">
    // 得到航班信息查询结果后的回调函数
    var flightHandler = function(data){
        alert('你查询的航班结果是:'+data);
    };
    // 提供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>
<body>

</body>
</html>

相关文章

  • 对jsonp的理解

    1.jsonp不是jsonjsonp是一种跨域数据交互协议,而json是一种数据格式。2.jsonp不是ajaxa...

  • 对jsonp 的理解认识

    什么是跨域?为什么要跨域呢?听说jsonp能. 为什么jsonp能跨域呢?什么时候使用jsonp?怎么使用json...

  • 对jsonp和json的理解

    说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决? 用JS...

  • 我对jsonp的浅显的理解

    一、同源策略 要理解跨域,先要了解一下“同源策略”。所谓同源是指,域名,协议,端口相同。所谓“同源策略“,简单的说...

  • jsonp理解

    1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、...

  • 理解 JSONP

    一、前置知识 页面与服务器的交互 在 AJAX 出现之前,页面与服务器的交互是怎么完成的呢? 通过提交 form ...

  • 理解jsonp

    1 什么是jsonp 首先,因为ajax无法跨域,然后开发者就有所思考 其次,开发者发现, 标签的src属性是可...

  • 【JSONP】JSONP实现跨域请求

    0x01 前言 今天复习了一下有关jsonp相关的攻防知识,突然发现自己对于jsonp的理解只是在书本上的那种,对...

  • JSONP

    JSONP 是一种 JSON 的使用方式, 这里的P 可以理解为 Padding 的意思.为什么要用 JSONP ...

  • 常用前端面试问题

    跨域方法 Jsonp: 采用非同源限制标签进行处理请求,我理解的jsonp => json - page一个jso...

网友评论

      本文标题:对jsonp的理解

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