var?seckill?=?{
URL?:?{
now?:?function(){
return?'/seckill/time/now';
},
exposer?:?function(seckillId){
return?'/seckill/'+seckillId+'/exposer';
},
execution?:?function(seckillId,?md5){
return?'/seckill'?+?seckillId?+?'/'?+?md5?+?'/exection';
}
},
handleSecKill?:?function(seckillId,?node){
//處理秒殺邏輯
//生成一個開始秒殺的按鈕(在操作節(jié)點之前先隱藏節(jié)點)
node.hide().html('<button?class="btn?btn-primary?btn-lg"?id="killBtn">開始秒殺</button>');//按鈕
//通過post請求服務器獲取秒殺地址
$.post(seckill.URL.exposer(seckillId),?{},?function(result){
//在回調(diào)函數(shù)中執(zhí)行交互流程
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);
//綁定一次點擊事件,防止用戶連續(xù)點擊秒殺按鈕
$('#killBtn').one('click',?function(){
//執(zhí)行秒殺請求
//這里的this相當于上句代碼$('#killBtn')本身
//1:先禁用按鈕(變灰)
$(this).addClass('disabled');
//2:發(fā)送秒殺請求執(zhí)行秒殺
$.post(killUrl,?{},?function(result){
if(result?&&?result['success']){
var?killResult?=?result['data'];
var?state?=?killResult['state'];
var?stateInfo?=?killResult['stateInfo'];
//3.顯示秒殺結(jié)果
node.html('<span?class="label?label-success">'?+?stateInfo?+?'</span>');
}
});
});
node.show();
}else{
//未開始秒殺(每個用戶的計時可能有偏差,有的快有的慢)
//從服務器返回結(jié)果中獲取3個時間(矯正時間)
var?now?=?exposer['now'];
var?start?=?exposer['start'];
var?end?=?exposer['end'];
//矯正時間后重新計算計時邏輯
seckill.countdown(seckillId,?now,?start,?end);
}
}else{
console.log('result:'?+?result);
}
});
},
//驗證手機號
validatePhone?:?function(phone){
if(phone?&&?phone.length?==?11?&&?!isNaN(phone))?{
return?true;
}else{
return?false;
}
},
//倒計時
countdown?:?function(seckillId,nowTime,startTime,?endTime){
var?seckillBox?=?$('#seckill-box');
//時間判斷
if(nowTime?>?endTime)?{
//秒殺結(jié)束
seckillBox.html('秒殺結(jié)束!');
}else?if(nowTime?<?startTime){
//秒殺未開始,計時事件綁定(使用的是jquery的計時插件?countdown)
//開始時間+1秒,防止用戶端的計時時間偏移
val?killTime?=?new?Date(startTime?+?1000);
seckillBox.countdown(killTime,function(event){
//當時間變化時,格式化輸出時間
var?format?=?event.strftime('秒殺倒計時:%D天?%H時?%M分?%S秒');
seckillBox.html(format);
//倒計時結(jié)束后的回調(diào)事件
}).on('finish.countdown',?function(){
//獲取秒殺地址,控制顯示邏輯,執(zhí)行秒殺
seckill.handleSecKill(seckillId,?seckillBox);
});
}else{
//秒殺開始
handleSecKill(seckillId,?seckillBox);
}
},
detail?:?{
//詳情頁初始化
init?:?function(params)?{
//手機驗證和登錄,即時交互
//規(guī)劃我們的交互流程
//在cookie中查找手機號
var?killPhone?=?$.cookie('killPhone');
var?startTime?=?params['startTime'];
var?endTime?=?params['endTime'];
var?seckillId?=?params['seckillId'];
//驗證手機號
if(!seckill.validatePhone(killPhone))?{
//如果沒有登錄,就綁定手機號
//獲取彈出層,控制它的輸出
var?killPhoneModal?=?$('#killPhoneModal');
console.log('inputPhone='+inputPhone);//TODO?使用console調(diào)試
killPhoneModal.modal({
show?:?true,//顯示彈出層
backdrop?:?'static',//禁止位置關(guān)閉(點擊彈出層之外的區(qū)域的話,彈出層也不會關(guān)閉)
keyboard?:?false//關(guān)閉鍵盤事件(按ESC鍵,彈出層也不會關(guān)閉)
});
//給按鈕綁定點擊事件
$('#killPhoneBtn').click(function(){
//獲取輸入的手機號碼
var?inputPhone?=?$('#killPhoneKey').val();
if(seckill.validatePhone(killPhone))?{
//電話寫入cookie,并且該cookie只在指定的path下才有效
$.cookie('killPhone',?inputPhone,?{expires:7,?path:'/seckill'})
//刷新頁面
window.location.reload();
}else{
//如果輸入的手機號碼不合法就提示錯誤信息
$('#killPhoneMessage').hide().html('<label?class="label?label-danger">手機號碼有誤!</label>').show(300);
}
});
}
//已經(jīng)登錄
//計時交互
var?startTime?=?params['startTime'];
var?endTime?=?params['endTime'];
var?seckillId?=?params['seckillId'];
$.get(seckill.URL.now(),?{},?function(result){
if(result?&&?result['success'])?{
var?nowTime?=?result['data'];
//計時服務時間判斷
countdown(seckillId,nowTime,startTime,endTime);
}else{
console.log('result:'+result);
}
});
}
}
}
2018-03-31
87行就抄錯了
2017-11-12
你把html的也貼出來