由於同源策略,一般來說位於 server1.example.com 的網頁無法與不是 server1.example.com 的伺服器溝通,而 HTML 的 <script> 元素是例外。利用 <script> 元素的這個開放策略,網頁可以得到從其他來源動態產生的 JSON 資料,而這個使用模式就是所謂的 JSONP。用 JSONP 抓到的資料不是 JSON,而是任意的 JavaScript,用 JavaScript 直譯器執行而不是用 JSON 解析器解析。 <br><br>以下是我在一個專案中的應用程式: <br><br>描述:網域 dev.uc.everychina.com 要取得網域 dev.members.everychina.com下的資料<BR>dev. members.everychina.com的伺服器端程式碼: <BR><div class="codetitle"><span><a style="CURSOR: pointer" data="93218" class="copybut" id="copybut93218" onclick="doCopy('code93218')"><U>複製程式碼 程式碼如下:<div class="codebody" id="code93218"> <BR><BR> 程式碼如下:<BR><BR> <BR><BR> 程式碼如下:<sController extends CController { <BR>public function actionIndex() { <BR>$callback = isset($_GET['callback']) ? $_GET['callback'] : ''; <BR>$result = array(); <BR>$userinfo = Intf_Client_Uc_User::instance()->getLoginUser(); <BR>$cid = Everychina_Member::instance()->getCid($userinfo['uid']); <BR>//公司展廳評分<BR>$room_score = Ec_RoomScore::getInstance(); <BR>//獲得展場老的評分<BR>$update_status = true; <BR>//重新評分<BR>if(isset($_GEGET[' action']) && $_GET['action']=='update') { <BR>$score_res = $room_score->getScoreInfo($cid); <BR>$room_score->updateScoreResult($cid,$score_res) ; <BR>$update_status = true; <BR>} <BR>$result['status'] = $update_status; <BR>$res = $room_score->getScoreResult($cid); <BR>$result[' score'] = $room_score->getScoreResultView($res['score']); <BR>if ($callback) { $js = json_encode($result); <BR>echo "$callback($ js) );"; <BR>} <div class="codetitle">} <span><a style="CURSOR: pointer" data="84932" class="copybut" id="copybut84932" onclick="doCopy('code84932')"> <U>網域dev.uc.everychina.com 下,前端呼叫(html) <div class="codebody" id="code84932">複製程式碼<BR><BR><BR> 程式碼如下:<BR> <BR><a id="update_score" href="#" onclick="ajaxUpdateScore();return false;"> 。 ><div class="codetitle"><span> 程式碼如下:<a style="CURSOR: pointer" data="62906" class="copybut" id="copybut62906" onclick="doCopy('code62906')"><U> function ajaxUpdateScore(){ if(document.getElementById("member_score_script")) {get <oom>. member_score_script"); document.body.removeChild(score_script); } <div class="codebody" id="code62906">var score_script = document.createElement("script"); <BR>score_script.id = "memberember_score_script; .src = 'http://dev.members.everychina.com/index.php?r=js/index&callback=show_score&t=' new Date().getTime(); <BR>document.body.appendChild(score_script); <BR>} <BR>function show_score(json) { <BR>if(json.status == true) { <BR>var html = '<p>level:' json.score.level '</script>
' ;msg:' json.score.msg '
';score:' json.score.score '
';