JSONP

Jsonp的原理:通过script标签可以访问不同源的地址,所以在页面中使用script标签中src属性访问不同源地址;
客户端页面中,使用JS创建一个新的script标签并添加到页面中,为该标签指定src等于请求服务端的地址,并在js中定义一个对数据的处理函数fn。服务端获取所需要的数据,将数据写在一段js代码中:echo “fn({$data})”;,在响应头中设置content-type为js格式,返回给客户端,与客户端的js配合执行对数据的操作。
客户端代码:

<script>
    var fnName ='jsonp_'+Date.now()+Math.random().toString().substr(2,5); //设置唯一的fnName,为了避免与php内置的函数重名
    var script = document.createElement('script');
    script.src = 'http://ajax2nd.abcd/jsonp/server.php?callback='+fnName;
    document.body.appendChild(script);
    window[fnName]=function(data) {
        console.log(data);
        delete window[fnName];
        document.body.removeChild("script");
    }
</script>

服务端:

header('Content-Type: application/javascript');
$result=json_encode($data);
$callback_name=$_GET['callback'];
echo "typeof {$callback_name}==='function' && {$callback_name}({$result})";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值