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


Posted in PHP onJanuary 30, 2015

本文实例讲述了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 相关文章推荐
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php简单实现MVC
Feb 05 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
php处理json格式数据经典案例总结
May 19 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 PHP
PHP速成大法
Jan 30 #PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 #PHP
PHP制作百度词典查词采集器
Jan 29 #PHP
php+mysqli事务控制实现银行转账实例
Jan 29 #PHP
php+mysqli批量查询多张表数据的方法
Jan 29 #PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
Jan 29 #PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 #PHP
You might like
php URL跳转代码 减少外链
2011/06/25 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python远程登录代码
2008/04/29 Python
python的urllib模块显示下载进度示例
2014/01/17 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
任命书格式
2014/06/05 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
2015新学期家长寄语
2015/02/26 职场文书
志愿者工作心得体会
2016/01/15 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
对Golang中的FORM相关字段理解
2021/05/02 Golang
js基础语法与maven项目配置教程案例
2021/07/15 Javascript