使用xml、PHP和Ajax实现点赞功能,不需要链接数据库,使用PHP来修改xml的内容,使用Ajax直接或许xml的内容。
一、准备好xml
<?xmlversion="1.0"?> <goodtree> <goodnode> <id>0</id> <count>17</count> </goodnode> <goodnode> <id>1</id> <count>37</count> </goodnode> <goodnode> <id>2</id> <count>67</count> </goodnode> </goodtree>
其中ID只是用来看清楚排序的,没有实际的调用作用。
二、准备好HTML
<divid="goodcount"> <span>0</span><buttononclick="goodplus(0);">good+1</button> <span>0</span><buttononclick="goodplus(1);">good+1</button> <span>0</span><buttononclick="goodplus(2);">good+1</button> <span>0</span><buttononclick="goodplus(3);">good+1</button> </div>
三、JAVASCRIPT 包括Ajax在内,还添加了判断cookie的功能
varspan=document.getElementsByTagName('span'); varnum; varflag=0; for(vari=1;i<span.length+1;i++){ senddata(i); } functiongoodplus(gindex){ flag=1; num=parseInt(span.item(gindex).innerHTML); if(checkcookie(gindex)==true){ num=num+1; senddata(gindex); }else{ alert("你已经点过赞咯!") } } functionsenddata(aindex){ varxmlhttp; vartxt; if(window.XMLHttpRequest){ xmlhttp=newXMLHttpRequest(); }else{ xmlhttp=newActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ if(flag==0){ xmldoc=xmlhttp.responseXML; varcount=xmldoc.getElementsByTagName('count'); varspan2=document.getElementsByTagName('span'); for(varj=0;j<count.length;j++){ span2.item(j).innerHTML=count[j].childNodes[0].nodeValue; } }elseif(flag==1){ xmldoc2=xmlhttp.responseText; varspan3=document.getElementsByTagName('span'); span3.item(aindex).innerHTML=xmldoc2; } } } if(flag==0){ xmlhttp.open("GET","/ajax/foodmap/index.xml"); }else{ xmlhttp.open("GET","/ajax/foodmap/index.PHP?num="+num+"&aindex="+aindex,true); } xmlhttp.send(); } //判断是否已经存在了cookie functioncheckcookie(gindex){ varthiscookie='sdcity_foodmap_goodplus'+gindex; varmapcookie=getCookie(thiscookie) if(mapcookie!=null&&mapcookie!=""){ returnfalse; }else{ setCookie(thiscookie,thiscookie,365); returntrue; } } //获取cookie functiongetCookie(c_name){//获取cookie,参数是名称。 if(document.cookie.length>0){//当cookie不为空的时候就开始查找名称 c_start=document.cookie.indexOf(c_name+"="); if(c_start!=-1){//如果开始的位置不为-1就是找到了、找到了之后就要确定结束的位置 c_start=c_start+c_name.length+1;//cookie的值存在名称和等号的后面,所以内容的开始位置应该是加上长度和1 c_end=document.cookie.indexOf(";",c_start); if(c_end==-1){ c_end=document.cookie.length; } returnunescape(document.cookie.substring(c_start,c_end));//返回内容,解码。 } } return""; } //设置cookie functionsetCookie(c_name,value,expiredays){//存入名称,值,有效期。有效期到期事件是今天+有效天数。然后存储cookie, varexdate=newDate(); exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+"="+escape(value)+((expiredays==null)?"":";expires="+exdate.toGMTString()) }
四、通过PHP来修改xml的数据,一开始调用xml的数据的时候不需要PHP文件。
<?PHP $num=$_GET['num']; echo$_GET['num']; $aindex=$_GET['aindex']; $dom=newDOMDocument('1.0'); $dom->load('index.xml'); $goodnode=$dom->getElementsByTagName('goodnode'); $goodnode=$goodnode->item($aindex); $items=$goodnode->getElementsByTagName('count'); foreach($itemsas$a){ $a->nodeValue=$_GET['num']; } $dom->save('index.xml'); ?>
完成。