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 相关文章推荐
?生?D片??C字串
Dec 06 PHP
Linux中用PHP判断程序运行状态的2个方法
May 04 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
PHP生成压缩文件实例
Feb 07 PHP
浅谈php自定义错误日志
Feb 13 PHP
Yii框架组件和事件行为管理详解
May 20 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
Jun 28 PHP
php时间戳转换代码详解
Aug 04 PHP
php+layui数据表格实现数据分页渲染代码
Oct 26 PHP
PHP cookie与session会话基本用法实例分析
Nov 18 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生成指定长度随机数最简洁的方法
2014/07/14 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
详谈PHP面向对象中常用的关键字和魔术方法
2017/02/04 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
Python判断文件和字符串编码类型的实例
2017/12/21 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
建筑自我鉴定
2013/10/19 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
建筑学专业自荐书
2014/07/09 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
学前班语言教学计划
2015/01/20 职场文书
暂住证明怎么写
2015/06/19 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis