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

5年以前  |  阅读数:693 次  |  编程语言:PHP 

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

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

一、准备好xml:


    <?xml version="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


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

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


    var span = document.getElementsByTagName('span'); 
    var num; 
    var flag = 0; 

    for(var i = 1; i < span.length + 1; i++){ 
        senddata(i);   
    } 

    function goodplus(gindex){ 
        flag = 1; 
        num = parseInt(span.item(gindex).innerHTML); 
        if(checkcookie(gindex) == true){ 
          num = num + 1; 
          senddata(gindex); 
        }else{ 
          alert("你已经点过赞咯!")   
        } 
    } 

    function senddata(aindex){ 
        var xmlhttp; 
        var txt; 
        if(window.XMLHttpRequest){ 
          xmlhttp=new XMLHttpRequest(); 
        }else{ 
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        xmlhttp.onreadystatechange=function(){ 
          if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
            if(flag == 0){ 
              xmldoc = xmlhttp.responseXML; 
              var count = xmldoc.getElementsByTagName('count'); 
              var span2 = document.getElementsByTagName('span'); 
              for(var j = 0; j < count.length; j++){ 
                span2.item(j).innerHTML = count[j].childNodes[0].nodeValue; 
              } 
            }else if(flag == 1){ 
              xmldoc2 = xmlhttp.responseText; 
              var span3 = 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 
    function checkcookie(gindex){ 
        var thiscookie = 'sdcity_foodmap_goodplus' + gindex; 
        var mapcookie = getCookie(thiscookie) 
        if (mapcookie!=null && mapcookie!=""){ 
          return false; 
        }else { 
          setCookie(thiscookie,thiscookie,365); 
          return true; 
        }   
    }

    //获取cookie 
    function getCookie(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; 
            } 
            return unescape(document.cookie.substring(c_start , c_end));
    //返回内容,解码。 
          }  
        } 
        return ""; 
    } 

    //设置cookie 
    function setCookie(c_name,value,expiredays){
    //存入名称,值,有效期。有效期到期事件是今天+有效天数。然后存储cookie, 
        var exdate=new Date(); 
        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=new DOMDocument('1.0'); 
    $dom->load('index.xml'); 
    $goodnode=$dom->getElementsByTagName('goodnode'); 
    $goodnode = $goodnode->item($aindex); 
    $items = $goodnode->getElementsByTagName('count'); 
    foreach($items as $a){ 
      $a->nodeValue = $_GET['num']; 
    } 
    $dom->save('index.xml'); 
    ?>

完成。

希望本文所述对大家的php程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例