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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
php后台程序与Javascript的两种交互方式
Oct 25 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
Drupal简体中文语言包安装教程
Sep 27 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
Jun 10 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
ThinkPHP实现的rsa非对称加密类示例
May 29 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHP 8新特性简介
Aug 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP 引用是个坏习惯
2010/03/12 PHP
PHP修改session_id示例代码
2014/01/08 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
jQuery位置选择器用法实例分析
2019/06/28 jQuery
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
用tensorflow构建线性回归模型的示例代码
2018/03/05 Python
详解Python3中ceil()函数用法
2019/02/19 Python
Pycharm小白级简单使用教程
2020/01/08 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
合同意向书范本
2014/07/30 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
安装工程师岗位职责
2015/02/13 职场文书
创业计划书之干洗店
2019/09/10 职场文书
Python绘制分类图的方法
2021/04/20 Python