php+xml結合Ajax實現點贊功能完整執行個體_php技巧

來源:互聯網
上載者:User

本文執行個體講述了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程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.