手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JSONP 跨域共享信息
JSONP 跨域共享信息
摘要:由于同源策略,一般来说位于server1.example.com的网页无法与不是server1.example.com的服务器沟通,而HTM...

由于同源策略,一般来说位于 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="#">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);

}

}

【JSONP 跨域共享信息】相关文章:

一个特帅的展示图片的js+css

jQuery计算文本框字数及限制文本框字数的方法

JS动画效果打开、关闭层的实现方法

JQUERY表单暂存功能插件分享

jQuery构造函数init参数分析续

JQuery选择器、过滤器大整理

给网页加个彩色窗口

一段实时更新的时间代码

实现DIV圆角的JavaScript代码

获取对象

精品推荐
分类导航