JSONP 跨域共享信息_Javascript教程-查字典教程网
JSONP 跨域共享信息
JSONP 跨域共享信息
发布时间:2016-12-30 来源:查字典编辑
摘要:由于同源策略,一般来说位于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);

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类