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简单实现加减乘除计算器
Jan 06 PHP
php中获取主机名、协议及IP地址的方法
Nov 18 PHP
php静态文件生成类实例分析
Jan 03 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
php解决约瑟夫环算法实例分析
Sep 30 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初学者们头痛的十四个问题
2007/01/15 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
Bootstrap每天必学之进度条
2015/11/30 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
javascript简单链式调用案例分析
2017/05/10 Javascript
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python爬取当当、京东、亚马逊图书信息代码实例
2017/12/09 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
Python处理session的方法整理
2019/08/29 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
电子商务专业个人的自我评价分享
2013/10/29 职场文书
毕业自我鉴定
2013/11/05 职场文书
会计顶岗实习心得
2014/01/25 职场文书
车辆工程专业求职信
2014/06/14 职场文书
金融管理专业求职信
2014/07/10 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书