//javascript模块化 //json对象的方式 var seckill = { //封装秒杀相关的URL URL: { now: function () { return 'seckill/time/now'; }, exposer:function(seckillId){ return '/seckill/'+seckillId+'/exposer/'; }, excution:function(seckillId,md5){ return '/seckill/'+seckillId+md5+'/execution/'; } }, // 验证手机号 validatePhone: function (phone) { if (phone && phone.length == 11 && !phone.isNaN()) { return true; } else { return false; } }, handlerSeckill:function(seckillId,node){ node.hide().html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀</button> '); $.post(seckill.URL.exposer(seckillId),{},function(result){ //在回掉函数中执行交互逻辑 if(result&&result['success']){ var exposer=result['data']; if(exposer['exposed']){ //开启秒杀 //获取秒杀地址 var md5=exposer['md5']; var killUrl=seckill.URL.execution(seckillId,md5); console.log("killUrl"+killUrl); // 绑定一次点击事件 $('#killBtn').one('click',function(){ //执行秒杀请求 // 1 先禁用按钮 $(this).addClass('disable'); $.post(killUrl,{},function(result ){ if(result&&result['success']){ var killResult=result['data']; var state=killResult['state']; var stateInfo=killResult['stateInfo']; // 显示秒杀结果 注意写法与123行的不同 node.html('<span class="lable lable-success">'+stateInfo+'</span>') } }); }); node.show(); }else{ //未开启秒杀 //json获取数据,重新计时 PC 机和客户端时间不一致 var now=exposer['now']; var start=exposer['start']; var end=exposer['end']; seckill.countdown(seckillId,now,start,end); } }else { console.log("result"+result); } }); }, countdown:function (seckillId,nowTime,startTime,endTime) { //时间判断 var seckillBox=$('#seckill-box'); if(nowTime>endTime){ seckillBox.html('秒杀结束'); }else if(nowTime<startTime){ //秒杀未开始 倒计时 var killTime=new Date(startTime+1000); seckillBox.countdown(killTime,function(event){ var format=event.striftime('秒杀倒计时: %D天 %H时 %M分 %S秒 '); seckillBox.html(format); //倒计时结束后h回掉事件 }).on('finish.countdown',function(){ // 获取秒杀地址,回调x显示逻辑,执行秒杀 seckill.handlerSeckill(seckillId,seckillBox); }); }else { // 秒杀开始 seckill.handlerSeckill(seckillId,seckillBox); } }, //detail页面秒杀逻辑 detail: { //详情页初始化 params前端页面传来的参数 //前端页面传人json类型的参数 // <script type="text/javascript"> // $(function () { // //使用EL表达式传入参数 // seckill.detail.init({ // seckillId:${seckill.seckillId}, // startTime:${seckill.startTime.time},//毫秒 // endTime:${seckill.endTime.time} // }); // }) // </script> init: function (params) { //手机验证和登录,即使交互 var killPhone = $.cookie("killPhone"); if (!seckill.validatePhone(killPhone)) { //绑定phone控制输出,killPhoneModel是bootstrap的一个model组件 默认为fade 隐藏 var killPhoneModal = $('#killPhoneModal'); killPhoneModal.modal({ show: true, backdrop: false, keyboard: fale }); $('#killPhoneBtn').click(function () { var inputPhone = $('#killPhoneKey').val(); if (seckill.validatePhone(inputPhone)) { //电话写入cookie $.cookie('killPhone', inputPhone, {expires: 7, path: '/seckill'}); window.location.reload(); } else { $('#killPhoneMessage').hide().html('<lable class="lable lable-danger">手机号错误!</lable>').show(300); } }); } $.get(seckill.URL.now(), {}, function (result) { if (result && result['success']) { var nowTime = result['data']; var startTime = params['startTime']; var endTime = params['endTime']; var seckillId = params['seckillId']; //时间判断 seckill.countdown(seckillId,nowTime,startTime,endTime); } else { console.log("result" + result); } }); } } }
转载于:https://my.oschina.net/u/2742720/blog/821810