>  기사  >  백엔드 개발  >  php+jquery+ajax开发抽奖功能模块下载

php+jquery+ajax开发抽奖功能模块下载

WBOY
WBOY원래의
2016-06-20 13:02:001054검색

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空格键开始/停止)


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.