post by
Plus / 2011-11-23 22:38 Wednesday
dedecms官方的digg功能是调用的一个dedeajax2.js的文件,那个文件是基于prototype写的代码~一共要6k的容量~虽然相对与prototype的126多K还是很小了~可是对于一个简单的异步传输,不用这么麻烦吧~下面我就给你介绍我用的代码~是用了一个xujiwei写的AJAXRequest的轻巧的AJAX代码~是国产的哦~
关于实时显示digg数值的问题就看这篇文章吧~
下面我们主要解决的是cookie和AJAX的digg问题~
对于digg官方给的说法是:
1.先添加dedeajax2.js的文件
2.在模板中加上下面的代码:
<script language="javascript">
function Digg(divId,aid){
var taget_obj = document.getElementById(divId+''+aid);
var myajax = new DedeAjax(taget_obj,false,false,"","","");
myajax.SendGet2("{dede:global name='cfg_cmspath'/}/digg.php?action=digg&aid="+aid);
DedeXHTTP = null;
}
</script>
3.在要显示“顶一下”的地方加上下面的代码:
<div class="diggLink"><a href="javascript:Digg('digg',{dede:field _fcksavedurl=""javascript:Digg('digg',{dede:field" name='id'/});">顶一下</a></div>
====================================================================
下面是我的方法~
1.下载最新的AJAXRequest文件,很小的压缩后就只有3K!地址是2yq5_AJAXRequest_0.8.10p2.zip
2.关于JavaScript的写法:
function digg(arcid){//digg发送
ajax.get("/digg.php?action=digg&aid="+arcid,
function(obj){$("digg"+arcid).innerHTML=obj.responseText;Set_Cookie("digg"+arcid,"1","2592000","/");});
}
function WYQdigg(arcid){//内嵌的函数,获取cookie,防止多次提交digg
if(Get_Cookie("digg"+arcid)=='1'){
document.write('踩过了');
}else{
document.write('<a href="javascript:digg('+arcid+');" _fcksavedurl=""javascript:digg('+arcid+');"" title="踩个脚印,获得更高的排名。">踩一下</a>');}}
function Get_Cookie(check_name){//获取cookie函数
var a_all_cookies=document.cookie.split(';');
var a_temp_cookie='';
var cookie_name='';
var cookie_value='';
var b_cookie_found=false;
for(i=0;i<a_all_cookies.length;i++){
a_temp_cookie=a_all_cookies[i].split('=');
cookie_name=a_temp_cookie[0].replace(/^s+|s+$/g,'');
if(cookie_name==check_name){
b_cookie_found=true;
if(a_temp_cookie.length>1){
cookie_value=unescape(a_temp_cookie[1].replace(/^s+|s+$/g,''));}
return cookie_value;break;}
a_temp_cookie=null;cookie_name='';}
if(!b_cookie_found){return '';}}
function Set_Cookie(name,value,expires,path,domain,secure){//设置cookie函数
var today=new Date();
today.setTime(today.getTime());
if(expires){expires=expires*1000;}
var expires_date=new Date(today.getTime()+(expires));
document.cookie=name+"="+escape(value)+((expires)?";expires="+expires_date.toGMTString():"")+((path)?";path="+path:"")+((domain)?";domain="+domain:"")+((secure)?";secure":"");}
function Delete_Cookie(name,path,domain){//删除cookie函数
if(Get_Cookie(name))document.cookie=name+"="+((path)?";path="+path:"")+((domain)?";domain="+domain:"")+";expires=Thu, 01-Jan-1970 00:00:01 GMT";}
function $(id){return document.getElementById(id);}
var ajax=new AJAXRequest();
*******************************************************
下面这里可以写上你下载的AJAXRequest啦~这个js总共也就是3k多点吧~自己压缩下也可以哩~
注释上面就可以看明白啦,就不多解释啦
3.在你要现实“顶一下”的地方加上
<div class="digglink" id="load">
<script type="text/javascript">WYQdigg({dede:field name='id'/})</script>
</div>
4.补充功能:提交的动态效果~就是我在<div class="digglink" id="load">上面写了个id=load,这样就可以在提交的时候显示一个loading的图片啦~具体的做法是:
function digg(arcid){//digg发送
ajax.get("/digg.php?action=digg&aid="+arcid,
function(obj){$("load").innerHTML=<img src="loading图片地址"/>;$("digg"+arcid).innerHTML=obj.responseText;Set_Cookie("digg"+arcid,"1","2592000","/");});
}
看清楚了没?就是加个innerHTML啦~