找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1234|回复: 0

[分享] DedeCMS digg Ajax 跨域的实现分析

[复制链接]
发表于 2018-7-14 18:31:49 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
提供解决方案如下:
@writen by etongchina 2009-02-06 19:00
实现方案:类似json实现
实现原理:js允许引入的远程文件(js)来操作本地数据
具体方法:(以http://news.xxx.com/200812/25-4653.html 为例)
1.修改http://news.xxx.com/200812/25-4653.html 的js调用用部分;
在本地html或js文件中写入:
  1. <SCRIPT LANGUAGE="JavaScript">
  2. function _Digg(type,tid){
  3. var s = document.createElement("SCRIPT");
  4. s.id="cgi_emotion_list";
  5. document.getElementsByTagName("HEAD")[0].appendChild(s);
  6. s.src="http://www.xxx.com/../dig.php?type="+type+"&tid="+tid ;
  7. //需要统计的php页面的 src
  8. }
  9. function visitCountCallBack(data){
  10. document.getElementsByTagName("HEAD")[0].removeChild(document.getElementById("cgi_emotion_list"));
  11. for(var i in data){
  12. var e =document.getElementById(i);
  13. if(e) e.innerHTML=data[i];
  14. //一些代码去修改本地html
  15. }
  16. }
  17. </script>
复制代码

修改以下代码:
  1. <a href="javascript:Digg('digg',4653);">顶一下</a>
复制代码

为:
  1. <a href="javascript:_Digg('digg',4653);">顶一下</a>
复制代码

2. 访问远程文件:
远程文件(http://www.xxx.com/../dig.php?type=digg&tid=456 )返回类似代码:
  1. visitCountCallBack({
  2. "visitcount":135
  3. });
复制代码

以上代码相当于远程文件调用本地函数:visitCountCallBack
这样一来就可以实现利用远程返回数据来动态修改本地文件。
3.总结:
关于此方案,目前可行,也有人认为会过时。我认为不会产生JS越权的问题。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-2-1 05:48 , Processed in 0.044503 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表