php+jquery+ajax实现抽奖系统模块代码如下:
首页在抽奖前需要将所有人员的参与名单在屏幕上滚动显示,所以就用jquery实现了,
1. 参与名单将放在一个txt文件里面,我将放到 phones.txt:
首先用ajax读取读取数据:
<script type="text/javascript"> $(document).ready(function(){ var phones; var list_phones = ''; $.ajax({ url: './get_set.php', type: 'POST', dataType: 'text', data: {'action' : 'get'}, success: function(data){ if(data && data != ''){ phones = data; phones = phones.split(','); //开始将参与名单滚动 for(var j=0; j<phones.length; j++){ list_phones += phones[j] + '<br />'; } var list_content = $('<div />').addClass('list-div').css({'position' : 'relative', 'top' : 0}).html(list_phones); $('#list-phones').append(list_content); //alert($('#list-phones').html()); //alert($('.list-div').height()); } } }); //list-phones : height=3162 - 200; var list_phones_h = 0; var list_start = setInterval( function(){ if(parseInt($('.list-div').position().top) < -2962){ $('.list-div').animate({top : 0}); list_phones_h = 0; } $('.list-div').animate({top : '-' + list_phones_h + 'px'}, function(){list_phones_h+=34;}); }, 1000 ); var start; //中奖名单 var $s = ''; //奖项 var jx; //是否开始 var flag = false; $('#start').click(function(){ start_chou(); }); $('#stop').click(function(){ stop_chou(); }); $(window).bind('keydown', function(event){ if(event.keyCode === 32){ !flag ? start_chou() : stop_chou(); } }); //开始抽奖 function start_chou(){ if(phones.length == 0){ $('#texes').val('error: 都抽完了,没有可参与的抽奖名单了!'); $('#current').val(''); return; } //关闭滚动 clearInterval(list_start); $('#list-phones').detach(); jx = $("input[name='jx']:checked").val(); if(!jx || jx == ''){ $('#texes').val('您还没有设置本次抽奖奖项!'); return; } if(!flag){ //alert(jx); $('#current').val(''); $('#texes').val('正在随机抽取,请耐心等待......'); flag = true; setTimeout(function(){ start = setInterval(function(){ $('#rrss').val(function(){ var len = phones.length; var rand = Math.floor(Math.random() * len); //console.log(rand); return phones[rand]; }); $('#current').val(Math.floor(Math.random() * 100000000000000000)); },1); }, 500); } } //停止抽奖 function stop_chou(){ if(flag){ flag = false; clearInterval(start); $('#current').val($('#rrss').val()); if(jx === 'tex'){ $s += '特等奖: ' + $('#current').val() + ','; $('#texes').val('特等奖!'); }else if(jx === 'one'){ $s += '一等奖: ' + $('#current').val() + ','; $('#texes').val('一等奖!'); }else if(jx === 'two'){ $s += '二等奖: ' + $('#current').val() + ','; $('#texes').val('二等奖!'); }else if(jx === 'three'){ $s += '三等奖: ' + $('#current').val() + ','; $('#texes').val('三等奖!'); }else{ $s += ''; $('#texes').val('您还没有设置本次抽奖奖项!'); } //本次抽奖完成后,自动移出本次获奖名单,不参与之后的抽奖 getIndex(phones, $('#current').val()); //将获奖名单写入到rs.txt文件中,记录获奖名单 set($s); //alert($s); } } function getIndex(arr, val){ var index = -1; for(var i=0; i<arr.length; i++){ if(arr[i] == val) index = i; } arr.splice(index, 1); //alert(index); } //将中奖信息写入 function set(rs){ $.ajax({ url : 'get_set.php', type: 'POST', dataType: 'text', data: {'action' : 'set', 'rs' : rs}, success: function(data){return true;} }); } $(document).ready(function(){ $(window).bind('keydown', function(event){ if(event.keyCode === 37 || event.keyCode === 38){ window.location.href = 'index.html'; } }); }); }); </script>
get_set.php文件直接读取phones.txt文件,将参与名单用“,”连接成字符串,然后利用js的Array split方法分隔成数组. 抽奖时是显示一些随机数字,跳动时间为10ms。
get_set.php:
<?php if(isset($_POST['action']) && $_POST['action'] == 'get'){ $file = './phones.txt'; $phones = ''; if(file_exists($file) && is_readable($file)){ $phones = file_get_contents($file); $phones = preg_replace('/\\r\\n\s*/', ',', $phones); }else{ die('phones.txt文件不存在或者不可读'); } Echo $phones; /* Echo '<pre class="brush:php;toolbar:false">'; print_r($phones); */ //Echo $phones; } if(isset($_POST['action']) && $_POST['action'] == 'set'){ $rs = $_POST['rs']; $data = str_replace(',', "\r\n", $rs); $file = './rs.txt'; file_put_contents($file, $data); return true; } ?>
中奖的名单将自动写入到 rs.txt文件,而且中奖后将不再参与下一轮抽奖。
开始抽奖(或者 按 Space空格键开始/停止)