• 浅析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跨域的问题!

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

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

  • 相关阅读:
    深拷贝、浅拷贝
    ctrl+c,ctrl+d,ctrl+z在linux程序中意义和区别
    python锁
    并发并行 进程线程
    编写shell简单shell脚本
    神经网络的滤波器嫁接技术 Filter Grafting for Deep Neural Networks
    Deeply-supervised Knowledge Synergy 深度监督知识协同
    mxnet错误
    oracle14 maven不能安装问题
    Hive外部表操作alter加载数据,并解决空问题
  • 原文地址:https://www.cnblogs.com/xjser/p/4962839.html
Copyright © 2020-2023  润新知