静态商品专题页面+动态显示价格及库存信息

前两天工作中需要做一个商品的专题页面,需求:当商品下架或库存为0时提示'商品已售罄',没有此商品时提示'商品不存在',正常情况下显示商品价格[登陆后若是会员则显示会员价]

效果图:

 

html页面代码:

 1 //因商品及价格摆放不规则故采用map标签
 2 
 3         <ul class="list">
 4             <li>
 5                 <img src="themes/mall/default/images/event/star/baileng1.jpg" usemap="#text1" target="_blank" alt="白领气质范"/>
 6                 <map name="text1" id="text1">   
 7                     <area shape="rect" coords="36,20,165,263" href ="http://www.maynear.com/index.php?app=goods&id=8745" target="_blank" />
 8                     <area shape="rect" coords="208,83,309,205" href ="http://www.maynear.com/index.php?app=goods&id=8746" target="_blank" />
 9                     
10                     <area shape="rect" coords="380,30,536,185" href ="http://www.maynear.com/index.php?app=goods&id=8747" target="_blank" />
11                     <area shape="rect" coords="446,192,558,412" href ="http://www.maynear.com/index.php?app=goods&id=8748" target="_blank" />
12                     
13                     <area shape="rect" coords="722,34,872,175" href ="http://www.maynear.com/index.php?app=goods&id=8749" target="_blank" />
14                     <area shape="rect" coords="835,180,905,415" href ="http://www.maynear.com/index.php?app=goods&id=8750" target="_blank"/>                
15                 </map>
16                 <span class="bl blsp1" goods_id="8745">loading...</span>
17                 <span class="bl blsp2" goods_id="8746">loading...</span>
18                 <span class="bl blsp3" goods_id="8747">loading...</span>
19                 <span class="bl blsp4" goods_id="8748">loading...</span>
20                 <span class="bl blsp5" goods_id="8749">loading...</span>
21                 <span class="bl blsp6" goods_id="8750">loading...</span>         
22             </li>                                             
23         </ul>

 

php方法:getGoodsInfoByIDs()根据商品ID获取商品详细信息并以json格式返回,若传过去的商品ID不存在则不会返回此ID相关的信息

    //根据ID列表获得商品信息
    public function getGoodsInfoByIDs() {
        $ids = $_POST[ 'ids' ];
        if( $ids )
        {
            $sql = "SELECT goods_id, retail_price, wholesale_price
                    ,(select sum( stock ) from shang_goods_spec as b where a.goods_id = b.goods_id ) as stock
                    ,if_show
                    FROM shang_goods as a
                    WHERE goods_id IN ( $ids ) AND closed = 0 AND sale_type > 0";
            $data = $this->getAll( $sql );
            echo json_encode( $data );
        }        
    }

 

JS:

 1 <script type="text/javascript">
 2 //获取专题页面中所有商品ID[获取span元素的goods_id属性值]
 3 function getGoodsIDs() {
 4     var ids = [];
 5     $( 'span[goods_id]' ).each( function() {
 6         ids.push( $( this ).attr( 'goods_id' ) );
 7     } );
 8     return ids;
 9 }
10 
11 //根据goodsID返回对应的span标签
12 function getPriceSpan( goodsID ) {
13     return $( 'span[goods_id="'+ goodsID +'"]' );  //返回属性goods_id是某个特定值的span元素
14 }
15 
16 /**
17  * @superSet 所有参加活动的goodsID [既AJAX请求所传递参数]
18  * @subSet   AJAX请求响应的goodsID
19  * @返回数组:不存在的goodsID
20  */
21 function searchNotExistsID( superSet, subSet ) {
22     var hash = {};
23     for( var i = 0; i < superSet.length; i++ ) {
24         hash[ superSet[ i ] ] = 'exists';
25     }
26     for( var i = 0; i < subSet.length; i++ ) {
27         if( hash[ subSet[ i ] ] ) {
28             delete hash[ subSet[ i ] ];  //若存在则删除对象元素
29         }
30     }
31     var result = [];
32     for( var key in hash ) {
33         result.push( key );
34     }
35     return result;
36 }
37 
38  
39 
40 seajs.use( 'common', function( common ) {
41     var islogin = common.islogin(); //是否登陆
42     var ids = getGoodsIDs();      //所有goodsID
43     var ajaxOption = new Object;
44     ajaxOption.url = 'index.php?app=goods&act=getGoodsInfoByIDs';
45     ajaxOption.dataType = 'JSON';
46     ajaxOption.type = 'POST';
47     ajaxOption.data = { ids: ids.join( ',' ) }   //以,隔开的字符串
48     ajaxOption.success = function( response ) {
49         var subSet = [];
50         for( var i = 0; i < response.length; i++ ) {
51             subSet.push( response[ i ].goods_id );  //subSet AJAX返回的goodsID[一维数组]
52             
53             var item = response[ i ];
54             var spanEl = getPriceSpan( item.goods_id ); //根据goodsID返回对应的span元素
55             if( item.stock > 0 && item.if_show == 1) {
56                 if( islogin ) {
57                     spanEl.html( '' + item.wholesale_price ); //若登陆则显示会员价
58                 } else {
59                     spanEl.html( '' + item.retail_price );
60                 }
61             } else {
62                 spanEl.html( '商品已售罄' );
63             }
64         }
65 
66 
67         //处理未找到的商品
68         var notFound = searchNotExistsID( ids, subSet );
69         for( var i = 0; i < notFound.length; i++ ) {
70             getPriceSpan( notFound[ i ] ).html( '商品不存在' );
71         }
72 
73 
74     } //success function end
75 
76 
77     $.ajax( ajaxOption );    
78 } );
79 
80 
81 </script>

 

 

posted on 2014-05-04 17:12  chengyanfen  阅读(1341)  评论(0编辑  收藏  举报

导航