我正在创建一个小比赛来赢得奖品。
我有4个奖项,我希望每10天有一次获胜。
我有两个问题:
-
当我点击图像
.panneau
(试图获胜)时,它总是在你没有获胜时附加消息 -
我不知道如何随机获得指示获胜的变量
下面是我当前的代码:
$(".panneau").click(function(){
if($(".panneau.uncover").length == 0){
$(this).addClass("uncover");
$("#intro").hide();
$.ajax({
url:'index.php',
type:'POST',
success:function(data){
var nomDuLot ="";
$('#registration input[type=hidden]').remove();
$('#registration').append('<input type="hidden" name="myprize" id="myprize" value="'+data.prize+'"/><input type="hidden" value="'+data.id+'" id="id" name="id"/>'+data.nonces);
if(data.prize=="1"){
nomDuLot = "price1";
}else if (data.prize=="2"){
nomDuLot = "price2";
}else if (data.prize=="3"){
nomDuLot = "price3";
}else if (data.prize=="4"){
nomDuLot = "price4";
}
setTimeout(function(){
if(data.prize=="1" || data.prize=="2" || data.prize=="3" || data.prize=="4"){
if(data.prize=="1"){
$(".panneau.uncover").append("<p class='long'>Bravo! Vous avez gagné<br><span class='lot'>"+nomDuLot+"</span></p>");
}
$("#inscription_auto_tirage_au_sort").html("Vous devez vous inscrire pour valider votre gain.<br>En plus, vous participerez automatiquement au tirage au sort pour tenter de gagner 1 set de pneus hiver d’une valeur de 500 €.");
$("#etape3 > h2.gagnant").addClass("active");
}else{
$(".panneau.uncover").append("<p>Vous n'avez<br> pas gagné...</p>");
$("#inscription_auto_tirage_au_sort").html("Mais tout n’est pas perdu. Inscrivez-vous pour tenter de gagner blablabla.");
$("#etape3 > h2.perdant").addClass("active");
// je force le gain à 0
$("#myprize").val("0");
}
$("#etape2").show();
}, 100);
}
});
}
});
-
index.php
必须返回响应的prize
密钥中的随机获胜。你总是收到失败的消息,因为没有一个获胜条件被满足(根据你的原始文本"ajax变量随机[…]我不知道该怎么做")。if(data.prize=="1" || data.prize=="2" || data.prize=="3" || data.prize=="4"){
只有当
index.php
的响应是这些字符串之一时,才会显示获胜。 -
如果你只想每10天赢一次,你需要在某个地方存储一个日期。它可以像写入磁盘的文本文件一样简单,也可以像写入数据库中的一行一样简单。但在某个地方,你需要存储上一次获胜的时间。然后,每次向
index.php
发出请求时,根据当前日期检查该日期。如果差值为10天,则随机生成一个win。您也可以有一个已经赢得奖品的列表,或者简单地动态计算可用的奖品(搜索目录
/prizes
以获得文件列表,当赢得奖品时,删除该文件)。对于这个问题没有100%正确或错误的答案,但是您可能想要考虑使用数据库来使问题更易于维护和报告(例如,"我想知道还剩下哪些奖品?"可以查询数据库而不是搜索文件)。你的"每10天"的逻辑可以是这样的:
if( $today >= $lastWin + '10 days' ){ $random = mt_rand( 0, 100000000 ); if( $random === 569351 ){ $prize = getRandomAvailablePrize(); } }
因此,在最后一次中奖是在10天前或更长时间内,百万分之一的人(统计上可能是或多或少)命中数字"569351"将赢得奖品。
当然,这都是伪代码,所以实际的实现将更深入一些,但这是为了给你一个想法。不要忘记在POST后返回JSON响应
{ "prize": "[number]" }
其中[number]
为1
、2
、3
、4
,若为空则为空