php多规格多价格,不同规格的不同价格是怎么实现的呢?? 看这里

处理点击商品规格的时候 显示不同的价格 不知到从何下手?? 看这里

效果如下:

0818b9ca8b590ca3270a3433284dd417.png

业务逻辑分析:

html页面元素:

{$spec.name}:

{$value.label}

用户点击属性规格,发送了什么呢??

$('button').click(function(){

spec_arr ='';

// 点击button的时候我们需要做二件事情:1 给当前button 添加样式 2 给当前button的

// 兄弟清除样式( 这些样式都是通过 添加清除类名来实现的 )

// 如果利用 attr 这个方法来操作元素的类名,那么就需要注意:

// 利用 atrr 将 class 置为空的时候它直接将之前本身的类名也一起干掉了。

// $(this).attr( 'class','act' ).siblings().attr('class','');

// 在JQ中,设计者认为对于类名的操作是很频繁的,所以它专门准备了一个方法

// 只用来操作元素的类名( 添加 删除 切换类名 )

$(this).addClass('Selected').siblings().removeClass('Selected');

//获取到button元素的长度

var length = $('#ECS_FORMBUY dl dd button[class=Selected]').length;

for(var i =0;i

{

if(i

{

//由于选中的元素+selected的class 获取其值

spec_arr+=$('#ECS_FORMBUY dl dd button[class=Selected]').eq(i).val()+',';

}else

{

spec_arr+=$('#ECS_FORMBUY dl dd button[class=Selected]').eq(i).val();

}

}

//var qty = document.forms['ECS_FORMBUY'].elements['number'].value;

//获取到规格的id 拼接为2,3这样的形式 ajax发送请求 查询对应的价格

$.get("goods.php", {act: "price", id: goodsId ,attr:spec_arr,number:qty},

function(res){

changePriceResponse(res);

},'JSON');

//Ajax.call('goods.php', 'act=price&id=' + goodsId + '&attr=' + spec_arr + '&number=' + qty, changePriceResponse, 'GET', 'JSON');

});

服务器端接收到数据后,进行了什么样的处理呢?

if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'price')

{

include('includes/cls_json.php');

$json = new JSON;

$res = array('err_msg' => '', 'result' => '', 'qty' => 1);

//接收规格id

$attr_id = isset($_REQUEST['attr']) ? explode(',', $_REQUEST['attr']) : array();

$number = (isset($_REQUEST['number'])) ? intval($_REQUEST['number']) : 1;

//如果为0进行错误的异常处理

if ($goods_id == 0)

{

$res['err_msg'] = $_LANG['err_change_attr'];

$res['err_no'] = 1;

}

else

{

if ($number == 0)

{

$res['qty'] = $number = 1;

}

else

{

$res['qty'] = $number;

}

//进行数据查询

$shop_price = get_final_price($goods_id, $number, true, $attr_id);

$res['result'] = price_format($shop_price * $number);

}

//处理为json返回给前端

die($json->encode($res));

}

那么服务器处理完,前端收到接收到处理完的数据,进行了什么处理呢??

function changePriceResponse(res)

{

//判断是否有错误

if (res.err_msg.length > 0)

{

alert(res.err_msg);

}

else

{

document.forms['ECS_FORMBUY'].elements['number'].value = res.qty;

//获取到dom元素 进行数据填充

if (document.getElementById('ECS_GOODS_AMOUNT'))

document.getElementById('ECS_GOODS_AMOUNT').innerHTML = res.result;

}

return false;

}

好啦,点击试试看吧,是否搞定啦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值