因為web項目用到二級域名的原因,使得原先的digg不能正常使用。仔細分析后,發(fā)現(xiàn)是Ajax JS提交不能跨域的問題。提供解決方案如下: 實現(xiàn)方案:類似json實現(xiàn) 1.修改http://news.xxx.com/200812/25-4653.html
的js調(diào)用用部分;
@writen by etongchina 2009-02-06 19:00
實現(xiàn)原理:js允許引入的遠程文件(js)來操作本地數(shù)據(jù)
參考文件:http://www.91linux.com/html/article/program/php/20071207/8938.html
具體方法:(以http://news.xxx.com/200812/25-4653.html
為例)
在本地html或js文件中寫入:
<SCRIPT LANGUAGE="JavaScript">
function _Digg(type,tid){
var s = document.createElement("SCRIPT");
s.id="cgi_emotion_list";
document.getElementsByTagName("HEAD")[0].appendChild(s);
s.src="http://www.xxx.com/../dig.php?type="+type+"&tid="+tid
;
//需要統(tǒng)計的php頁面的 src
}
function visitCountCallBack(data){
document.getElementsByTagName("HEAD")[0].removeChild(document.getElementById("cgi_emotion_list"));
for(var i in data){
var e =document.getElementById(i);
if(e) e.innerHTML=data[i];
//一些代碼去修改本地html
}
}
</script>
修改以下代碼:<a href="javascript:Digg('digg',4653);">頂一下</a>
為:<a href="javascript:_Digg('digg',4653);">頂一下</a>
2. 訪問遠程文件:
遠程文件(http://www.xxx.com/../dig.php?type=digg&tid=456
)返回類似代碼:
visitCountCallBack({
"visitcount":135
});
以上代碼相當(dāng)于遠程文件調(diào)用本地函數(shù):visitCountCallBack
這樣一來就可以實現(xiàn)利用遠程返回數(shù)據(jù)來動態(tài)修改本地文件。
3.總結(jié):
關(guān)于此方案,目前可行,也有人認為會過時。我認為不會產(chǎn)生JS越權(quán)的問題。
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答?。?點擊進入論壇