zoukankan      html  css  js  c++  java
  • 浅析JSONP

    什么是JSONP?

    JSONP是JSON with Padding的略称。它是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。--来源百度

    从它的定义中不难看出jsonp是一种以json格式作为填充的一种实现跨域的方法!

    <span">那么这里说的填充指的又是什么?我们来看一段例子:

    function callback(a){
    alert(a.name);
    }
    <script src="http://.....com/..php?JSONP='21'"></script>
    

      

    上面是一个最简单的一个带参数的函数,假设我们现在需要跨越获取一些数据,如获取当前用户的名字name,参数a就是我们需要从后台获取的数据,但是在上面我们并没有调用他!而是通过script标签向服务器发送请求,下面我们在来看看php文件怎么写:

    if(!empty($_GET['JSONP'])){
        $id = $_GET['JSONP'];
        $query = mysql_query("select * from user where id=$id");
        $res = mysql_fetch_array($query);
        echo "callback({‘name’:$res['name'])";
    }
    

      

    上面就是php文件的内容了,首先获取请求的url参数,在这里我传的是用户id,然后根据id去数据库查询对应的数据,然后输出js文件定义的方法名,并把用户的名字当成参数放进去!

    这里我们对于参数的补充,就是我们上面所说的填充,顾名思义,就是把我们要取的数据填充到参数里!

    看了上面的例子就不难理解了,jsonp其实就是在前台定义一个函数,然后通过script标签发送请求(由于script标签发送的请求是可以不守跨域规则限制),然后后台处理并输出之前定义的函数名,并把数据以json的格式填充到参数中,这样在请求返回时就会调用我们之前定义的函数,并获得想要的数据!

    这就实现了一个简单的jsonp!说的直白点就是在前台定义函数,然后后台输出函数名和参数完成函数的调用和数据的获得!当然,它最主要的作用在于解决js跨域的问题!

    由于本人水平有限,只能简单的说一些实例,来和大家共同成长!感谢各位浏览!

    本文由 平凡公子原创并首次发表欢迎转载(转载请注明作者和原文地址)!

  • 相关阅读:
    获取设备和 App 信息
    使用 UICollectionView 实现网格化视图效果
    UIImage 读取图片内存优化
    使用 stretchableImageWithLeftCapWidth 方法实现可伸缩图片
    使用 StoryBoard 实现左右按钮切换图片的浏览效果
    二维码图片生成(扩展知识:创建带圆角效果的图片)
    Objective-C语法之扩展(Extension)的使用
    Objective-C语法之字符串NSString去掉前后空格或回车符(可以是NSCharacterSet类型的其它字符)
    Objective-C语法之可变参数
    什么时候layoutSubview会被调用
  • 原文地址:https://www.cnblogs.com/xjser/p/4962839.html
Copyright © 2011-2022 走看看