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 相关文章推荐
解析link_mysql的php版
Jun 30 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
php实现的递归提成方案实例
Nov 14 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 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
JS 网站性能优化笔记
2011/05/24 PHP
php URL跳转代码 减少外链
2011/06/25 PHP
深入PHP autoload机制的详解
2013/06/09 PHP
php生成扇形比例图实例
2013/11/06 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
JavaScript中数组slice和splice的对比小结
2016/09/22 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
Javascript查看大图功能代码实现
2020/05/07 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
100行python代码实现跳一跳辅助程序
2018/01/15 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
pandas实现将dataframe满足某一条件的值选出
2019/06/12 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
零基础学python应该从哪里入手
2020/08/11 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
生产管理的三大手法
2013/11/11 职场文书
医学生个人求职信范文
2014/02/07 职场文书
教师党员承诺书
2014/03/25 职场文书
股权转让意向书
2014/04/01 职场文书
教师教学评估方案
2014/05/09 职场文书
法制演讲稿
2014/09/10 职场文书
单位介绍信格式范文
2015/05/04 职场文书
安全教育培训心得体会
2016/01/15 职场文书
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python