php+ajax实现商品对比功能示例


Posted in PHP onApril 13, 2019

本文实例讲述了php+ajax实现商品对比功能。分享给大家供大家参考,具体如下:

商品对比调用的JS文件(包含了商品对比框浮动JS):

/*浮动窗口*/
(function(){
 var n=10;
 var obj=document.getElementById("goods-compare");
 if(!obj){
  return false;
 }
 var x=0;
 window.onscroll=function(){
  obj.style.top=(document.body.scrollTop||document.documentElement.scrollTop)+n+'px';
 };
 window.onresize=function(){
  obj.style.top=(document.body.scrollTop||document.documentElement.scrollTop)+n+'px';
 };
})();
//添加显示对比框
function addcompare(chk){
 $('#goods-compare').fadeIn().show();
 var count=$(".compare-box li").length;
 if (count>2)//这里可以修改对比的数据哦
 {
  alert('产品比较最多选3种哦');
  return;
 }
 $.ajax({
  type: 'post',
  url: 'ajax.php',
  data: {
   'action':'1',
   'gid':chk.gid,//商品ID
   'gname':chk.gname,//商品名称
   'gtype':chk.gtype//商品类别,类别不同时不能比较
  },
  cache: false,
  async: false,
  success: function(result) {
   if(result!='')
   {
    alert(result);
   }else{
    var url='http://www.lusen.com/product-'+chk.gid+'.html';//设置商品的链接地址
    $(".compare-box").append("<li class='division clearfix' id='"+chk.gid+"'><div class='span-3'><a href='"+url+"' target='_blank' title='"+chk.gname+"'>'"+chk.gname+"'</a></div><span onclick=\"removecompare('"+chk.gid+"');\">删除</span></li>")
    $("#comids").val($(".compare-box li").map(function(){//将对比的所有商品ID,赋值给#comids
     return $(this).attr('id');
    }).get().join(","));
   }
  }
 });
}
//删除对比产品
function removecompare(id)
{
 $.ajax({
  type: 'post',
  url: 'ajax.php',
  data: {
   'action':'2',
   'gid':id
  },
  cache: false,
  success: function(result) {
   $("#"+id).remove();
   $("#comids").val($(".compare-box li").map(function(){
    return $(this).attr('id');
   }).get().join(","));
  }
 });
}
//清空对比产品
function clearcompare()
{
 $.ajax({
  type: 'post',
  url: 'ajax.php',
  data: {
   'action':'3'
  },
  cache: false,
  success: function(result) {
   $(".compare-box").html('');
   $("#comids").val('');
  }
 });
}
//显示对比框
function showcompare()
{
 $.ajax({
  type: 'post',
  url: 'ajax.php',
  data: {
   'action':'4'
  },
  success: function(result) {
   if(result){
    $(".compare-box").append(result);
    $("#comids").val($(".compare-box li").map(function(){
     return $(this).attr('id');
    }).get().join(","));
    $('#goods-compare').fadeIn().show();
   }
  }
 });
}
//点击关闭对比框
$('.close-gc').click(function(){
 $('#goods-compare').fadeOut().hide();
});

商品对比调用Ajax文件:

<?php
function mb_unserialize($serial_str) {
 $serial_str =stripslashes($serial_str);
 return unserialize($serial_str);
}
if($_POST['action']=='1') {//add
 if(isset($_COOKIE['gtype'])) {
  if($_COOKIE['gtype']!=$_POST['gtype']) {
   echo '对不起,您选择的是不同类别的产品无法加入对比,请选择同类产品或清空当前对比栏再选择。';
   return;
  }
 }else {
  setcookie('gtype',$_POST['gtype']);
 }
 if(isset($_COOKIE['gid'])) {
  $arr_str = $_COOKIE['gid'];
  $arr=mb_unserialize($arr_str);
  if(count($arr)>2) {//商品比较数量
   echo "商品比较最多选3种";
   return;
  }
  foreach($arr as $val) {
   if($val[0]==$_POST['gid']) {
    echo "该商品已经加入对比框";
    return;
   }
  }
  $info=array($_POST['gid'],$_POST['gname'],$_POST['gtype']);
  $arr[]=$info;
  $arr_str=serialize($arr);
  setcookie('gid',$arr_str);
 }else {
  $info=array($_POST['gid'],$_POST['gname'],$_POST['gtype']);
  $arr[]=$info;
  $arr_str=serialize($arr);
  setcookie('gid',$arr_str);
 }
}else if($_POST['action']=='2') {//delone
 $id=$_POST['gid'];
 $arr_str = $_COOKIE['gid'];
 $arr=mb_unserialize($arr_str);
 foreach($arr as $key=>$val) {
  if($val[0]==$id) {
   unset ($arr[$key]);
  }
 }
 $arr_str=serialize($arr);
 setcookie('gid',$arr_str);
}else if($_POST['action']=='3') {//delall
 setcookie('gid','');
 setcookie('gtype','');
}else if($_POST['action']=='4') {//showlist
 if(isset($_COOKIE['gid'])) {
  $data='';
  $arr_str = $_COOKIE['gid'];
  $arr=mb_unserialize($arr_str);
  foreach ($arr as $val){
   $url="http://www.lusen.com/product-".$val[0].".html";
   $data.="<li id='{$val[0]}' class='division clearfix'><div class='span-3'><a href='{$url}' target='_blank' title='{$val[1]}'>{$val[1]}</a></div><span onclick=\"removecompare('{$val[0]}');\">删除</span></li>";
  }
  echo $data;
 }
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP和ACCESS写聊天室(一)
Oct 09 PHP
Windows PHP5和Apache的安装与配置
Jun 08 PHP
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
服务器web工具 php环境下
Dec 29 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
php数据访问之增删改查操作
May 09 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 PHP
laravel中的fillable和guarded属性详解
Oct 23 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
PHP获取学生成绩的方法
Nov 17 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 #PHP
详解PHP素材图片上传、下载功能
Apr 12 #PHP
laravel 事件/监听器实例代码
Apr 12 #PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 #PHP
laravel使用Faker数据填充的实现方法
Apr 12 #PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 #PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 #PHP
You might like
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
SUN的《AJAX与J2EE》全文译了
2007/02/23 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
javascript中href和replace的比较(详解)
2016/11/25 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
python写入中英文字符串到文件的方法
2015/05/06 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python类装饰器实现方法详解
2018/12/21 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
Python Web程序搭建简单的Web服务器
2019/07/31 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
2014年综治宣传月活动总结
2014/04/28 职场文书
白血病捐款倡议书
2014/05/14 职场文书
环保倡议书怎么写
2014/05/16 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
起诉意见书范文
2015/05/19 职场文书
三好学生竞选稿
2015/11/21 职场文书
入党转正申请书范文
2019/05/20 职场文书
python基础详解之if循环语句
2021/04/24 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB