JSONP 跨域共享信息

 更新时间:2012年08月16日 11:33:52   作者:  
JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料。另一个解决这个问题的新方法是跨来源资源共享
由于同源策略,一般来说位于 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);
}
}

相关文章

  • 实现单层json按照key字母顺序排序的示例

    实现单层json按照key字母顺序排序的示例

    下面小编就为大家分享一篇实现单层json按照key字母顺序排序的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • JS操作JSON常用方法(10w阅读)

    JS操作JSON常用方法(10w阅读)

    工作中做了几款自动化测试工具都是跟日志读取相关,日志格式又大多数都是JSON,所以这里把常用的JS操作JSON的方法做了总结,需要的朋友可以参考下
    2020-12-12
  • json编写简单一例

    json编写简单一例

    主要是了解一下json的简单写法与应用,方便想学习json的朋友
    2008-08-08
  • web页面数据展示新想法(json)

    web页面数据展示新想法(json)

    若使用json作为客户端和服务器之间的数据交换格式,代替原来的html交换格式。
    2010-06-06
  • JS中JSON.parse(JSON.stringify())实现深拷贝

    JS中JSON.parse(JSON.stringify())实现深拷贝

    深拷贝就是完全拷贝一份新的对象,本文主要介绍了JS中JSON.parse(JSON.stringify())实现深拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • JavaScript 创建对象

    JavaScript 创建对象

    JSON方式/对象直接量 等多种方法。大家可以快速的掌握js对象的建立。
    2009-07-07
  • 把普通对象转换成json格式的对象的简单实例

    把普通对象转换成json格式的对象的简单实例

    下面小编就为大家带来一篇把普通对象转换成json格式的对象的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 利用NodeJS的子进程(child_process)调用系统命令的方法分享

    利用NodeJS的子进程(child_process)调用系统命令的方法分享

    child_process即子进程可以创建一个系统子进程并执行shell命令,在与系统层面的交互上挺有用处
    2013-06-06
  • Chrome中JSON.parse的特殊实现

    Chrome中JSON.parse的特殊实现

    ECMA 262 Edition5 中提供了原生的JSON支持,其中JSON.parse用来将字符串转成成json,见ECMA 262 Edition5 15.12.2。另见:字符串转换成json的三种方式
    2011-01-01
  • 如何实现json数据可视化详解

    如何实现json数据可视化详解

    最近在工作中开发一个内部功能时碰到的一个需求,要把json数据在页面上展示出来,平时浏览器会安装jsonView这样的扩展来看json数据,但是程序要用到的话该怎么办呢?今天在网上搜索的时候,发现了这个小技巧,分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧
    2016-11-11

最新评论