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 ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
PHP 验证码的实现代码
Jul 17 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
Sep 20 PHP
php foreach循环中使用引用的问题
Nov 06 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
PHP+JQUERY操作JSON实例
Mar 23 PHP
PHP中递归的实现实例详解
Nov 14 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
PHP常用函数之获取汉字首字母功能示例
Oct 21 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制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
JSON 编辑器实现代码
2009/12/06 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
Jquery 扩展方法
2010/05/06 Javascript
jQuery插件开发全解析
2012/10/10 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
深入Python函数编程的一些特性
2015/04/13 Python
Python 专题四 文件基础知识
2017/03/20 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
python2.7实现复制大量文件及文件夹资料
2019/08/31 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
售后服务经理岗位职责
2014/02/25 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
利用Java连接Hadoop进行编程
2022/06/28 Java/Android