讀取跨網域主機的資料方法1:最簡單方法,不須使用asp.net, php, 使用<script src='....js'></script>,
讀取跨網域資料的基本原理: 在<body>...</body>之間放入<script type="text/javascript" src="http://acupun.site/lecture/jquery_phoneGap/18-CrossDomain01.js">,裡面有個callBackdata()會傳回值



1.:目前javascript與jQuery網頁,若要讀取跨網域資料,市場上所使用的方法,幾乎都是借助伺服器端程式php, asp.net, node.js等等來執行call back函數才能達成讀取跨網域端的資料。

2.在此提出一個另類且簡單的快速方法,且不需要php, asp.net等伺服器技術:使用<script src="http://..../example.js">即可讀取任何網址的*.js資料原理,把json,xml放置該example.js 裡面,即可讀到

1.:javascript網頁,讀取跨網域資料的基本原理

(1).一般的簡單非跨網域的程式

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function callBackdata(txt) {
alert(txt);
}

</script>
</head>
<body>
<script type="text/javascript">
callBackdata("來自跨網域主機的密碼文字:大家好");
</script>

</body>
</html>

(2).拆解上面網頁,分成兩部分,把callBackdata("來自跨網域主機的密碼文字:大家好")放到遠端跨網域的call.js裡面

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function callBackdata(txt) {
alert(txt);
document.getElementById("id01").innerHTML = txt;
}

</script>
</head>
<body>
<script type="text/javascript" src="http://acupun.site/lecture/jquery_phoneGap/call.js"> </script>
</body>
</html>

在遠端伺服器有個call.js,裡面程式碼的內容是

callBackdata("來自跨網域主機的密碼文字:大家好");

結論:利用javascript這種可以呼叫遠端*.js的功能,就可以把xml, json資料放入遠端*.js的callBackdata("資料儲存在這裡"),間接達成讀取跨網域資料的目的了

 

(2).本題實作:

在遠端伺服器有個18-CrossDomain01.js,裡面程式碼的內容是

callBackdata("來自跨網域主機的密碼文字:大家好");

在本地端網頁18-CrossDomain01.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function callBackdata(txt) {
alert(txt);
}

</script>
</head>
<body>
<p>
<div class="purple1" id="id01"></div>
</p>
<script type="text/javascript" src="http://acupun.site/lecture/jquery_phoneGap/18-CrossDomain01.js"> </script>
</body>
</html>

注意:
(1). <script type="text/javascript" src="*.js....>要放在</body>的最下面

舉例:<div class="purple1" id="id01"></div>若放在<script type="text/javascript" src="*.js....>的下面,則無法在id01處顯示文字

結論:程式控制所顯示的元件,若在<script type="text/javascript" src="*.js....>的下面,都無法顯示