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下删除字符串中HTML标签的函数
Aug 27 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
单点登录 Ucenter示例分析
Oct 29 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
php利用imagemagick实现复古老照片效果实例
Feb 16 PHP
详细对比php中类继承和接口继承
Oct 11 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
深入PHP5中的魔术方法详解
2013/06/17 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
prototype 的说明 js类
2006/09/07 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
js原型链原理看图说明
2012/07/07 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
AngularJS表单基本操作
2017/01/09 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
vue实现点击选中,其他的不选中方法
2018/09/05 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
python爬虫的数据库连接问题【推荐】
2018/06/25 Python
python实现C4.5决策树算法
2018/08/29 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python shelve模块实现解析
2019/08/28 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
为什么是 Python -m
2020/06/19 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
企业宣传标语
2014/06/09 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
好好学习保证书
2015/02/26 职场文书
学校教学管理制度
2015/08/06 职场文书
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
oracle重置序列从0开始递增1
2022/02/28 Oracle