JSONP 跨域共享信息
2012-08-15 18:46
141 查看
定义来源:http://zh.wikipedia.org/wiki/JSONP
JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料。另一个解决这个问题的新方法是跨来源资源共享。
由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com 的服务器沟通,而 HTML 的
下面是我在一个项目中的应用:
描述:域名dev.uc.everychina.com 要获得域名 dev.members.everychina.com下的数据
dev.members.everychina.com的服务器端代码:
域名 dev.uc.everychina.com 下,前端调用(html)
javascript
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); } }
相关文章推荐
- JSONP 跨域共享信息
- JSONP 跨域共享信息
- 关于跨域名的信息共享P3P实例
- 多域名(跨域)登录信息共享解决方案乱弹
- [CORS:跨域资源共享] 同源策略与JSONP
- 跨域资源共享CORS实现跨域对比JSONP
- 多域名(跨域)登录信息共享解决方案乱弹
- [CORS:跨域资源共享] 同源策略与JSONP
- [CORS:跨域资源共享] 同源策略与JSONP
- 【JavaScript】跨源资源共享CORS和其他跨域技术(Comet、JSONP、SSE、Web Sockets)
- asp.net forms 身份验证方式下跨域登录信息共享的实现方法
- JS 跨域资源共享 -- Ajax CORS / img ping / jsonp
- django上课笔记7-jQuery Ajax 和 原生Ajax-伪造的Ajax-三种Ajax上传文件方法-JSONP和CORS跨域资源共享
- javascipt 跨域资源共享、JSONP
- [CORS:跨域资源共享] 通过扩展让ASP.NET Web API支持JSONP
- ajax使用jsonp跨域调用webservice error错误信息"readyState":4,"status":200,"statusText":"success"
- 通过jsonp解决浏览器的跨域共享
- 借助cryptoJS , jsonp跨域,请求心知天气API ,获取天气信息
- jsonp方式解决跨域共享问题
- asp.net forms 身份验证方式下跨域登录信息共享的实现方法