首页 > Web开发 > 详细

jsonp跨域访问数据

时间:2015-01-04 18:51:22      阅读:258      评论:0      收藏:0      [点我收藏+]

实例一,使用 jquery 的 $.getJSON 方法

 

//前端js :

$("#selId").click(function() {
$.getJSON("http://www.example.com/remote.php?callback=?", // callback=?参数是重点,会传递到后台自动处理
{name: ‘max‘, age: 23, str: ‘hello‘},
function(data) {
console.log(data);
}
);

});

//后端remote.php

$callback = $_REQUEST[‘callback‘]; //前台传递过来的 ? 号,被jquery自动解析为一个函数名
$arr = array(‘name‘=>‘hello‘, ‘age‘=>23, ‘male‘=>‘female‘, ‘str‘=>$_REQUEST[‘str‘]);
$tmp = json_encode($arr);
echo $callback."($tmp)"; //实质上,后台这里只需要返回 “funName({ name: ‘max‘, age: 23 } json数据 )”格式的字符串就行了

 

 

实例二,使用 jquery 的 $.ajax 方法

//前端代码:

$("#selId").click(function() {
$.ajax({
type: "GET",

//asyn 默认为 true,表示使用异步请求;false 表示使用同步请求,同步请求将锁定浏览器,用户其他操作需等待请求完成才可以执行
async: false,
url: "http://www.example.com/remote.php", // 跨域的后台文件,主要是生成字符串;
dataType: "jsonp", //使用 jsonp 方式获取
jsonp: "callback", //用于获得jsonp回调函数名的参数名,一般为 callback 

/**自定义的 jsonp 回调函数名,此时后台返回字符串为 echo“remoteHandler( json )”; 用 ? 的话jquery会随机自动生成,后台代码则为 $callback=$_REQUEST[‘callback‘], echo $callback. jsonStr.

*/
jsonpCallback: "remoteHandler",
success: function(json) {
console.log(json);
},

});

});

 

 

//后台remote.php

$arr = array(‘name‘=>‘hello‘, ‘age‘=>23, ‘male‘=>‘female‘, ‘str‘=>$_REQUEST[‘str‘]);

$tmp = json_encode($arr);
echo "remoteHandler($tmp)"; // remoteHandler 与前台传进来的 jsonpCallback: "remoteHandler" 对应

jsonp跨域访问数据

原文:http://www.cnblogs.com/JavaVenus/p/4201666.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!