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 相关文章推荐
常用的javascript function代码
May 23 Javascript
使用JS+plupload直接批量上传图片到又拍云
Dec 01 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
JS实现文字掉落效果的方法
May 06 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
Dec 02 Javascript
vue实现列表的添加点击
Dec 29 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 Javascript
使用axios请求接口,几种content-type的区别详解
Oct 29 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
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中经典方法实现判断多维数组是否为空
2011/10/23 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
vscode 远程调试python的方法
2017/12/01 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
对pandas中to_dict的用法详解
2018/06/05 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
实例代码讲解Python 线程池
2020/08/24 Python
html5的localstorage详解
2017/05/09 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
环境科学专业个人求职信
2013/12/15 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
给物业的表扬信
2014/01/21 职场文书
材料员岗位职责
2014/03/13 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
核心价值观演讲稿
2014/05/13 职场文书
病人慰问信范文
2015/02/15 职场文书
归途列车观后感
2015/06/17 职场文书
感恩教育主题班会
2015/08/12 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL