搜索
首页后端开发php教程php+jquery+ajax开发抽奖功能模块下载

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
使用PHP发送电子邮件的最佳方法是什么?使用PHP发送电子邮件的最佳方法是什么?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依赖注入的最佳实践PHP中依赖注入的最佳实践May 08, 2025 am 12:21 AM

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

PHP性能调整技巧和技巧PHP性能调整技巧和技巧May 08, 2025 am 12:20 AM

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

PHP电子邮件安全性:发送电子邮件的最佳实践PHP电子邮件安全性:发送电子邮件的最佳实践May 08, 2025 am 12:16 AM

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

您如何优化PHP应用程序的性能?您如何优化PHP应用程序的性能?May 08, 2025 am 12:08 AM

TOOPTIMIZEPHPAPPLICITIONSFORPERSTORANCE,USECACHING,数据库imization,opcodecaching和SererverConfiguration.1)InlumentCachingWithApcutCutoredSatfetchTimes.2)优化的atabasesbasesebasesebasesbasesbasesbaysbysbyIndexing,BeallancingAndWriteExing

PHP中的依赖注入是什么?PHP中的依赖注入是什么?May 07, 2025 pm 03:09 PM

依赖性注射inphpisadesignpatternthatenhancesFlexibility,可检验性和ManiaginabilybyByByByByByExternalDependencEctenceScoupling.itallowsforloosecoupling,EasiererTestingThroughMocking,andModularDesign,andModularDesign,butquirscarecarefulscarefullsstructoringDovairing voavoidOverOver-Inje

最佳PHP性能优化技术最佳PHP性能优化技术May 07, 2025 pm 03:05 PM

PHP性能优化可以通过以下步骤实现:1)在脚本顶部使用require_once或include_once减少文件加载次数;2)使用预处理语句和批处理减少数据库查询次数;3)配置OPcache进行opcode缓存;4)启用并配置PHP-FPM优化进程管理;5)使用CDN分发静态资源;6)使用Xdebug或Blackfire进行代码性能分析;7)选择高效的数据结构如数组;8)编写模块化代码以优化执行。

PHP性能优化:使用OpCode缓存PHP性能优化:使用OpCode缓存May 07, 2025 pm 02:49 PM

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境