jsonp原生实现跨域

原理:通过script标签的src获取不同源服务器端上的json数据(只能使用GET请求)

  • 前端发送请求:设置一个<label id='result'>用来接收数据,设置一个按钮<button id='btn'>给按钮绑定点击事件
var btn=document.getElementById('btn');
var result=document.getElementById('result');
btn.onclick=function(e){
  e.preventDefault();
  var OH=document.getElementsByTagName('head')[0];//获取到head标签
  var OS=document.createElement('script');//创建script标签
  var url="http://localhost:8080/jsonp.php?callback=jsonpData";//跨域请求的地址,参数值是一个解析函数(该函数用来解析json,处理返回值)
  OS.attr('src',url);
}
  • //定义解析函数
function jsonpData(data){
  result.innerHtml="jsonp请求成功:字段1="+data.param1+"字段2="+data.param2;
}
  • //后台jsonp.php的处理
<?php
header('content-type:text/html;charset=utf8');
    $arr = array ('param1'=>'hahaha','param2'=>'jsonp so easy'); 
    $err=array('param1'=>'未校验jsonp','param2'=>'jsonp so good');
    if(!empty($_GET['id'])){
	echo $_GET['callback']."(".json_encode($arr).")";		
    }else{
	echo $_GET['callback']."(".json_encode($err).")";
    }
?>

//$_GET['id']作用是接口的校验,可以过滤一些错误或恶意请求,以上仅供参考!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值