JSONP 跨域共享信息


Posted in Javascript onAugust 16, 2012

由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com 的服务器沟通,而 HTML 的 <script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的 JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

下面是我在一个项目中的应用:

描述:域名dev.uc.everychina.com 要获得域名 dev.members.everychina.com下的数据
dev.members.everychina.com的服务器端代码:

class JsController extends CController { 
public function actionIndex() { 
$callback = isset($_GET['callback']) ? $_GET['callback'] : ''; 
$result = array(); 
$userinfo = Intf_Client_Uc_User::instance()->getLoginUser(); 
$cid = Everychina_Member::instance()->getCid($userinfo['uid']); 
//公司展厅评分 
$room_score = Ec_RoomScore::getInstance(); 
//获得展厅老的评分 
$update_status = true; 
//重新评分 
if(isset($_GET['action']) && $_GET['action']=='update') { 
$score_res = $room_score->getScoreInfo($cid); 
$room_score->updateScoreResult($cid,$score_res); 
$update_status = true; 
} 
$result['status'] = $update_status; 
$res = $room_score->getScoreResult($cid); 
$result['score'] = $room_score->getScoreResultView($res['score']); 
if ($callback) { 
$js = json_encode($result); 
echo "$callback( ($js) );"; 
} 
}

域名 dev.uc.everychina.com 下,前端调用(html)
<a id="update_score" href="#" onclick="ajaxUpdateScore();return false;">update score</a> 
<div id="member_score"></div>

javascript
function ajaxUpdateScore(){ 
if(document.getElementById("member_score_script")) { 
var score_script = document.getElementById("member_score_script"); 
document.body.removeChild(score_script); 
} 
var score_script = document.createElement("script"); 
score_script.id = "member_score_script"; 
score_script.src = 'http://dev.members.everychina.com/index.php?r=js/index&callback=show_score&t='+new Date().getTime(); 
document.body.appendChild(score_script); 
} 
function show_score(json) { 
if(json.status == true) { 
var html = '<p>level:'+json.score.level+'</p>'; 
html += '<p>msg:'+json.score.msg+'</p>'; 
html += '<p>score:'+json.score.score+'</p>'; 
$("#member_score").html(html); 
} 
}
Javascript 相关文章推荐
js原生态函数中使用jQuery中的 $(this)无效的解决方法
May 25 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
老生常谈onBlur事件与onfocus事件(js)
Jul 09 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
Vue 实用分页paging实例代码
Apr 12 Javascript
jquery操作ul的一些操作笔记整理(干货)
Aug 31 jQuery
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
VUE 全局变量的几种实现方式
Aug 22 Javascript
Javascript中parseInt的正确使用方式
Oct 17 Javascript
微信小程序日历组件使用方法详解
Dec 29 Javascript
Javascript节流函数throttle和防抖函数debounce
Dec 03 Javascript
js自执行函数的几种不同写法的比较
Aug 16 #Javascript
js三种排序算法分享
Aug 16 #Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 #Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 #Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 #Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 #Javascript
You might like
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
Vue表单实例代码
2016/09/05 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Selenium定位元素操作示例
2018/08/10 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Python接口测试结果集实现封装比较
2020/05/01 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
学习群众路线的心得体会
2014/11/05 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang