本文实例讲述了 php+xml 结合 Ajax 实现点赞功能的方法分享给大家供大家参考具体如下:
使用 xmlphp 和 Ajax 实现点赞功能, 不需要链接数据库, 使用 php 来修改 xml 的内容, 使用 Ajax 直接或许 xml 的内容
一准备好 xml:
- <?xml version="1.0"?>
- 0
- 17
- 1
- 37
- 2
- 67
其中 ID 只是用来看清楚排序的, 没有实际的调用作用
二准备好 html
- 0good+1
- 0good+1
- 0good+1
- 0good+1
三 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');
- ?>
来源: https://www.php1.cn/detail/php-fd60403a94.html