php点击加入或取消收藏ajax接受数据session存储
feilong.org 修订于2012-02-03 01:22:43 1,932点击某个图片或文本链接或任何DOM元素,将某日志文章加入收藏或取消收藏,可以采用ajax实现,然后在接受数据页用session存储该文章ID号。如何用Ajax与session结合,实现加入或取消收藏的功能?飞龙自己捣鼓了以下的代码。本日志修订网址:http://feilong.org/ajax-session-click-add-remove-favorate
一、首先在点击互动页,一般是某文章页。
飞龙的WordPress是某个single日志页,需要实现点击链接切换收藏或取消收藏的效果。同时需要向目标数据接受页传递日志ID号。
1、根据本文章是否已经收藏,调出对应的链接图片或文本:
<?php @session_start();$addids=$_SESSION['pids'];print_r($addids); if(in_array($postid,$addids)){$hide2='hide';}else{$hide1='hide';} ?> <a href="#" title="已收藏,取消标记吗" id="biaojied" class="<?php echo $hide1; ?>"><span>取消收藏</span></a> <a href="#" title="把本文加入收藏" id="biaoji" class="<?php echo $hide2; ?>"><span>加入收藏</span></a> <a id="pid" title="<?php $postid=$post->ID;echo $post->ID;//feilong ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a> |
2、点击上面显示出来的某个链接,实现轮换链接,并实现向“数据接受页”传递日志ID号。以下是飞龙自己写的jQuery和Ajax结合实现变换和传递数据。
////收藏//// $(function(){ var pid=$("#pid").attr("title");//alert(pid); $("#biaoji").click(function(){// $(this).toggleClass("hide"); // 向‘收藏页’提交此文的pid $.ajax({ type: "POST", url: "http://127.0.0.1/xinyuan/bookmark",//此为数据接受页,可以改为你自己的实际url data:"pid="+pid, success: function(msg){ // alert(msg); var addpid=$(msg).find("#addpid").text();//alert(addpid); //此#addpid点击的同时,数据接受页内的DOM //$("#zhaiyao").append(msg); if(addpid){ alert('success: 收藏此文ID:'+addpid); //成功提示,可以采用其它方式提示 }else{//收藏失败 }// }//success });//$.ajax $("#biaojied").toggleClass("hide"); }); });//0 ////取消收藏//// $(function(){ var pid=$("#pid").attr("title");//alert(pid); $("#biaojied").click(function(){// $(this).toggleClass("hide"); // 向‘收藏页’提交此文的pid $.ajax({ type: "POST", url: "http://127.0.0.1/xinyuan/bookmark", data:"pid="+pid, success: function(msg){ // alert(msg); var movepid=$(msg).find("#movepid").text();//alert(movepid); //$("#zhaiyao").append(msg); if(movepid){ alert('success: 取消收藏此文ID:'+movepid); }else{ //无法取消收藏? }// }//success });//$.ajax $("#biaoji").toggleClass("hide"); }); });//0 |
二、数据接受页,飞龙采用指定的某page页面。需要接受来自 互动点击页的ID,并检查已有session是否有此日志ID,并做相应的处理,输出新的session值。如果是直接打开此页面,而没有接受到任何数据,那么直接取出已有的session值。
1、接受传递过来的日志ID,并处理session得到新session,显示日志ID的DOM,方便第一步里msg调用。
<?php $pid=$_POST['pid']; if($pid){ fl_add_favors($pid); //$pids=$_SESSION['pids']; $addpid=$_SESSION['addpid']; echo '<div id="addpid">'.$addpid.'</div>'; $movepid=$_SESSION['movepid']; echo '<div id="movepid">'.$movepid.'</div>'; }else{//直接打开此收藏页的情况下,取出已有session即可 @session_start(); $pids=$_SESSION['pids']; print_r($pids); }/// ?> |
2、飞龙写的session处理函数:接受来自 互动点击页的ID,并检查已有session是否有此日志ID,并做相应的处理,输出新的session值。
function fl_add_favors($pid){ @session_start(); $old=$_SESSION['pids']; if(in_array($pid,$old)){//已收藏,干掉 $a2[]=$pid; //从数组中去掉此 $pid,返回两个数组的差集数组。键名保持不变。 $new=array_diff($old,$a2);// $old-$a2 unset($_SESSION['addpid']);$_SESSION['movepid']=$pid; echo '<script language="JavaScript">alert("取消标记啦!";</script>'; }else{//没收藏?加入 $new=$old;$new[]=$pid; $_SESSION['addpid']=$pid;unset($_SESSION['movepid']); echo '<script language="JavaScript">alert("本文成功加入收藏夹!";</script>'; } //去掉空值 $new=array_filter($new); $_SESSION['pids']=$new; }//20120202 feilong |
更新网址:http://feilong.org/ajax-session-click-add-remove-favorate
最初发布:20120203 12:55:02 feilong.org 于广州
加入收藏夹,查看更方便。