【问题标题】:Execute only one time and then wait set period of time before executing again只执行一次,然后等待设定的时间再执行
【发布时间】:2022-04-25 05:42:41
【问题描述】:

我试图让用户每 30 天只执行一次弹出窗口。目前,弹出窗口正在无限循环中执行。每次我触发它都会执行。一而再,再而三。它应该只发生 1 次,然后设置某种 cookie 或检查,30 天后如果用户回来,它将再次执行。我试过在 PHP 中设置 cookie。使用一个。 jQuery 方法。在 jQuery 中设置 cookie。使用标志变量。所有这些事情,它仍然总是执行。我最好需要 PHP 或 jQuery 的解决方案。

<script>
$( document ).ready(function() {

var SetWait;
var filledPhone;
//setTimeout(function(){}, 1500);//close timeout
SetWait = 1;

setTimeout(function(){SetWait=0;}, 1200);

$("body").mouseleave(function() {
    if(SetWait==0){
        if(!filledPhone){
    $("#myModalpopup").fadeIn();
    $(".modal-backdrop").fadeIn();
    $(".modal-content").fadeIn();
    
        }//close filled email check
    }
});//close function

$(".close").click(function() {
    SetWait = 1;
    $("#myModalpopup").fadeOut();
    $(".modal-backdrop").fadeOut();
    $(".modal-content").fadeOut();
    setTimeout(function(){SetWait=0;}, 2500);
});//close function

    
$("#twillioPopup").click(function() {
    var the_number = $("#custPhone").val(); //email user enters


    if(!the_number){
        alert('Please enter phone number.');    
    }else{
        $("#myModalpopup").fadeOut();
        $(".modal-backdrop").fadeOut();
        $(".modal-content").fadeOut();
        filledPhone = the_number;   
        /////////  DO AJAX TO SAVE EMAIL AND CART ID ETC /////////
            $.ajax({
                type: 'POST',
                url:  'ajax/twillioPopup.php',
                data: {the_number:the_number},
                success: function( response ){
                    $('#success_message').html(response);
                }
            }); //close ajax    
        /////////  DO AJAX TO SAVE EMAIL AND CART ID ETC /////////
    }//close if else
});//close click    
    

});//close ready
</script>

【问题讨论】:

    标签: javascript php jquery cookies


    【解决方案1】:

    尝试创建一个 30 天后过期的 php COOKIE。如果未设置 cookie,则运行代码并设置它,否则什么也不做。像这样?

    <?php
    
    if(isset($_COOKIE['yourCookieName'])){
       //Do nothing
    } else {
       $cookie_name = "yourCookieName";
       $cookie_value = "set";
       setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
       ?>
        //Break out of php and run your javascript here
       <?php 
    }
    ?>
    

    这应该检测 cookie 是否已设置,如果未设置,则运行一次 javascript,然后设置 cookie(如果他们在接下来的 30 天内重新访问,而 cookie 仍处于活动状态,则 javascript 将被忽略)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2011-02-12
      • 2012-06-28
      • 1970-01-01
      相关资源
      最近更新 更多