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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
php visitFile()遍历指定文件夹函数
Aug 21 PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
Dec 29 PHP
php 不使用js实现页面跳转
Feb 11 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 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
php 无极分类(递归)实现代码
2010/01/05 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
vue-cli+webpack记事本项目创建
2017/04/01 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
Sanic框架应用部署方法详解
2018/07/18 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
经理职责范文
2013/11/08 职场文书
学术会议邀请函范文
2014/01/22 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
初二物理教学反思
2016/02/19 职场文书
德生BCL3000抢先使用感受和评价
2022/04/07 无线电
什么是css原子化,有什么用?
2022/04/24 HTML / CSS