php跨域jsonp,jquery+ajax+jsonp+php跨域使用方法

所谓的跨域其实就是跟后端通信:前端利用url地址扔一个函数过去给后端,然后后端接收到这个函数,把转换完成的json数据装在这个(callback)函数里并且调用返回给前端.

$.ajax({

method : "GET",

url : "http://www.example.com/test/crossDomain.php",

dataType: "jsonp",

success : function (data) {

console.log(data);

//output:{"name":"张三","age":"25","sex":"boy","skill":["Java","C++","NodeJs","PHP"]}

}

});

这个简单的例子生成的url:http://www.example.com/test/crossDomain.php?callback=jQuery214044077341514639556_1442902171702&_=1442902171703

可以看出url后面的参数:

callback=jQuery214044077341514639556_1442902171702&_=1442902171703

这些都是jquery默认生成的.

&_=1442902171703 表示生成一个时间码有助于更新缓存

crossDomain.php

$datas = array( "name"=>"张三",

"age"=>"25",

"sex"=>"boy",

"skill"=>array(

"Java",

"C++",

"NodeJs",

"PHP"

)

);

echo $_GET['callback']."(".json_encode($datas).")";

?>

请接着往下看

有必要讲一下ajax的options项jsonp以及jsonpCallback属性

例子:

$.ajax({

method : "GET",

url : "http://www.example.com/test/crossDomain.php",

dataType: "jsonp",

jsonp : "myCallback",

jsonpCallback : "myCallbackFunc",

success : function (data) {

console.log(data);

//output:{"name":"张三","age":"25","sex":"boy","skill":["Java","C++","NodeJs","PHP"]}

}

});

function myCallbackFunc(data){

console.log(data);

//output:{"name":"张三","age":"25","sex":"boy","skill":["Java","C++","NodeJs","PHP"]}

}

jsonp : “myCallback” //这是修改URL参数callback名称

callback=jQuery214044077341514639556_1442902171702

修改为:

crossDomain.php?myCallback=jQuery214044077341514639556_1442902171702&_=1442902171703

jsonpCallback : “myCallbackFunc”

修改回调函数,默认是jQuery214044077341514639556_1442902171702 一堆随机数

把它修改为:myCallbackFunc

这样就可以独立出来一个函数,不必再ajax.success里操作

crossDomain.php?myCallback=myCallbackFunc&_=1442902585937

crossDomain.php

$datas = array( "name"=>"张三",

"age"=>"25",

"sex"=>"boy",

"skill"=>array(

"Java",

"C++",

"NodeJs",

"PHP"

)

);

echo $_GET['myCallback']."(".json_encode($datas).")";

?>

还有一种使用方法直接调用$.getJSON

$.getJSON("http://www.example.com/test/crossDomain.php?myCallback=?",function(data) {

console.log(data);

//output:{"name":"张三","age":"25","sex":"boy","skill":["Java","C++","NodeJs","PHP"]}

});

博主不建议使用jsonp来获取数据,万一人家盗用数据,除非后端做了指定域名访问.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值