当前位置:首页 > PHP教程 > php应用 > 列表

php+xml结合Ajax实现点赞功能完整实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-09 15:27:51 浏览: 评论:0 

这篇文章主要介绍了php+xml结合Ajax实现点赞功能的方法,以一个完整实例形式详细分析了XML文件、html页面以及Ajax结合php实现点赞功能的技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了php+xml结合Ajax实现点赞功能的方法。分享给大家供大家参考。具体如下:

使用xml、php和Ajax实现点赞功能,不需要链接数据库,使用php来修改xml的内容,使用Ajax直接或许xml的内容。

一、准备好xml:

  1. <?xml version="1.0"?>  
  2. <goodtree>  
  3.   <goodnode>  
  4.     <id>0</id>  
  5.     <count>17</count>  
  6.   </goodnode>  
  7.   <goodnode>  
  8.     <id>1</id>  
  9.     <count>37</count>  
  10.   </goodnode>  
  11.   <goodnode>  
  12.     <id>2</id>  
  13.     <count>67</count>  
  14.   </goodnode>    
  15. </goodtree> 

其中ID只是用来看清楚排序的,没有实际的调用作用。

二、准备好HTML

  1. <div id="goodcount"> 
  2.   <span>0</span><button onclick="goodplus(0);">good+1</button> 
  3.   <span>0</span><button onclick="goodplus(1);">good+1</button> 
  4.   <span>0</span><button onclick="goodplus(2);">good+1</button> 
  5.   <span>0</span><button onclick="goodplus(3);">good+1</button> 
  6. </div> 

三、JAVASCRIPT 包括Ajax在内,还添加了判断cookie的功能

  1. var span = document.getElementsByTagName('span');  
  2. var num;  
  3. var flag = 0;  
  4.  
  5. for(var i = 1; i < span.length + 1; i++){  
  6.     senddata(i);    
  7. }  
  8.  
  9. function goodplus(gindex){  
  10.     flag = 1;  
  11.     num = parseInt(span.item(gindex).innerHTML);  
  12.     if(checkcookie(gindex) == true){  
  13.       num = num + 1;  
  14.       senddata(gindex);  
  15.     }else{  
  16.       alert("你已经点过赞咯!")    
  17.     }  
  18. }  
  19.  
  20. function senddata(aindex){  
  21.     var xmlhttp;  
  22.     var txt;  
  23.     if(window.XMLHttpRequest){  
  24.       xmlhttp=new XMLHttpRequest();  
  25.     }else{  
  26.       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
  27.     }  
  28.     xmlhttp.onreadystatechange=function(){  
  29.       if(xmlhttp.readyState == 4 && xmlhttp.status == 200){  
  30.         if(flag == 0){  
  31.           xmldoc = xmlhttp.responseXML;  
  32.           var count = xmldoc.getElementsByTagName('count');  
  33.           var span2 = document.getElementsByTagName('span');  
  34.           for(var j = 0; j < count.length; j++){  
  35.             span2.item(j).innerHTML = count[j].childNodes[0].nodeValue;  
  36.           }  
  37.         }else if(flag == 1){  
  38.           xmldoc2 = xmlhttp.responseText;  
  39.           var span3 = document.getElementsByTagName('span');  
  40.           span3.item(aindex).innerHTML = xmldoc2;  
  41.         }  
  42.       }  
  43.     }  
  44.     if(flag == 0){  
  45.       xmlhttp.open("GET","/ajax/foodmap/index.xml");  
  46.     }else{  
  47.       xmlhttp.open("GET","/ajax/foodmap/index.php?num=" + num + "&aindex=" + aindex,true);    
  48.     }  
  49.     xmlhttp.send();  
  50. }  
  51.  
  52. //判断是否已经存在了cookie  
  53. function checkcookie(gindex){  
  54.     var thiscookie = 'sdcity_foodmap_goodplus' + gindex;  
  55.     var mapcookie = getCookie(thiscookie)  
  56.     if (mapcookie!=null && mapcookie!=""){  
  57.       return false;  
  58.     }else {  
  59.       setCookie(thiscookie,thiscookie,365);  
  60.       return true;  
  61.     }    
  62.  
  63. //获取cookie  
  64. function getCookie(c_name){ 
  65. //获取cookie,参数是名称。  
  66.     if (document.cookie.length > 0){ 
  67. //当cookie不为空的时候就开始查找名称   
  68.       c_start = document.cookie.indexOf(c_name + "=");  
  69.       if (c_start != -1){ 
  70. //如果开始的位置不为-1就是找到了、找到了之后就要确定结束的位置  
  71.         c_start = c_start + c_name.length + 1 ; 
  72. //cookie的值存在名称和等号的后面,所以内容的开始位置应该是加上长度和1  
  73.         c_end = document.cookie.indexOf(";" , c_start);  
  74.         if (c_end == -1) {  
  75.           c_end = document.cookie.length;  
  76.         }  
  77.         return unescape(document.cookie.substring(c_start , c_end)); 
  78. //返回内容,解码。  
  79.       }   
  80.     }  
  81.     return "";  
  82. }  
  83.  
  84. //设置cookie  
  85. function setCookie(c_name,value,expiredays){ 
  86. //存入名称,值,有效期。有效期到期事件是今天+有效天数。然后存储cookie,  
  87.     var exdate=new Date();  
  88.     exdate.setDate( exdate.getDate() + expiredays )  
  89.     document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : "; expires=" + exdate.toGMTString())  
  90. }  

四、通过php来修改xml的数据,一开始调用xml的数据的时候不需要php文件。

  1. <?php  
  2. $num = $_GET['num'];  
  3. echo $_GET['num'];  
  4. $aindex = $_GET['aindex'];  
  5. $dom=new DOMDocument('1.0');  
  6. $dom->load('index.xml');  
  7. $goodnode=$dom->getElementsByTagName('goodnode');  
  8. $goodnode = $goodnode->item($aindex);  
  9. $items = $goodnode->getElementsByTagName('count');  
  10. foreach($items as $a){  
  11.   $a->nodeValue = $_GET['num'];  
  12. }  
  13. $dom->save('index.xml');  
  14. ?> 

完成。

Tags: php+xml Ajax点赞功能

分享到: