由於JavaScript有同個域名的限制,無法跨網站傳遞資料,因此要突破這個限制,就得另闢蹊徑。
利用Dom方法操作動態JS腳本請求來做這件事。
<pre class="html" name="code">
//建立一個script節點
var oScript = document.createElement('script');
//script的src可以指向非同一網域的動態script程式,並且可帶查詢參數
oScript.src = "http://yyy.com/query.php?"+yourQueryString;
//並可指定charset
oScript.charset = "utf-8";
//透過Dom操作把新節點加入到檔案中
document.getElementsByTagName("head")[0].appendChild(oScript);
只要query.php的輸出是可執行的javaScript,比如:djsCallBack({jsondata});
當他從伺服器返回後就會自動執行,就可用json做資料傳遞了。
腳本請求最好帶上時間戳記,避免瀏覽器cahce造成取回非即時性的資料。
另外,可以要求資料索取者在查詢參數中提供回呼函數名,比如query.php?callback=myDataHandler&key=...?
這樣就可以根據參數提供不同的myDataHandler({jsondata}),增加資料查詢的多元性。