【问题标题】:Using setTimeout with jquery将 setTimeout 与 jquery 一起使用
【发布时间】:2015-09-01 17:21:03
【问题描述】:

我想在一个打开的箱子上设置一个计时器。我把它放在我的按钮上

 <input type="submit" value="Checkout" name="submitAction" class="btn btn-block alert-success" onclick="unlockcase()" />

这是我的函数,它调用我的控制器并在 15 分钟后关闭案例。

      function unlockcase() {
        setTimeout(function () {
            var id = @Model.ID
     $.ajax({
         type: 'POST',
         url: '/Case/UnlockCase',
         data: 'id=' + id,
         success: function () {
             window.location.reload(true);

         }
     });
        },15000);
   };

它会命中函数和控制器,但它会立即发生,而计时器没有工作。任何帮助将不胜感激。

【问题讨论】:

  • 15 分钟等待定义在哪里?
  • 定时器有100作为输入,即100毫秒。
  • 用 15 * 60 * 1000 代替 100。
  • 对不起。我应该改变这一点。我早些时候降低了它以确保它击中我的控制器。我会编辑它
  • 你没有取消点击...

标签: jquery ajax settimeout


【解决方案1】:

首先把你的html改成这个

     <button type="button" class="btn btn-block alert-success" onclick="unlockcase()">Checkout</button>

那么你的javascript可以如下

    function unlockcase() {
        setTimeout(function () {
            var id = @Model.ID;

            $.ajax({
                type: 'POST',
                url: '/Case/UnlockCase',
                data: 'id=' + id,
                success: function () {
                    window.location.reload(true);
                }
             });
         }, 15 * 1000 * 60);
     }

setTimeoout中的等待时间单位是millisecond,所以15 * 1000表示15秒,15 * 1000 * 60表示15分钟。

【讨论】:

    【解决方案2】:

    如果您使用 jQuery,为什么不在按钮上使用 .click() 事件。像这样的:

    HTML:

    <input type="submit" value="Checkout" name="submitAction" class="btn btn-block alert-success myButton" />
    

    Javascript:

    $('.myButton').click(function() {
        var counter = 1;
        var timer = setInterval(function(){
            if(counter > 900000){ //If it passed 15 minutes.
                //DO YOUR AJAX CALL
                var id = @Model.ID;
                $.ajax({
                    type: 'POST',
                    url: '/Case/UnlockCase',
                    data: 'id=' + id,
                    success: function () {
                        window.location.reload(true);
                    }
                 });
                //Clear the loop
                clearInterval(timer); 
            }
            counter++;
        }, 1000);
    });
    

    JSFiddle:http://jsfiddle.net/hoggen1o/

    【讨论】:

      猜你喜欢
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-29
      相关资源
      最近更新 更多