【问题标题】:Update the query onbeforeunload and更新查询 onbeforeunload 和
【发布时间】:2017-05-20 06:11:25
【问题描述】:

这是我在设置$_POST 时的第一个查询:

<?php
    if (isset($_POST['bags']))
{
    $bagS=$_POST['bags'];
        $id=$_POST["id"];
        $_SESSION['id']=$id;
        $cats = explode(" ", $bagS);
        $cats = preg_split('/,/', $bagS, -1, PREG_SPLIT_NO_EMPTY);
        foreach($cats as $key => $cat )
        {
        $cat  = mysqli_real_escape_string($con,$cats[$key]);
        $cat = trim($cat);
 if($cat !=NULL)
             {
                 $stmt = $con->prepare('UPDATE wallet SET `Status`="Hold" where `Id`=? AND `bags`="'.$cat.'" ');
                 $stmt->bind_param("s", $_POST["id"]);
                 $stmt->execute();

  }
  }
}

之后,如果用户端没有任何反应,则设置脚本超时以更新下一个查询。

<script type="text/javascript">
          setTimeout(function() { window.location.href = "index.php?on_timeout=1"; }, 60 * 500);
</script>

然后脚本在超时时返回查询字符串并执行更新查询并重定向到其他页面:

if(isset($_GET['on_timeout'])) {

   echo  $bagS=$_SESSION['bags'];
   echo $id=$_SESSION['id'];
        $cats = explode(" ", $bagS);
        $cats = preg_split('/,/', $bagS, -1, PREG_SPLIT_NO_EMPTY);
        foreach($cats as $key => $cat )
        {
        $cat  = mysql_real_escape_string($cats[$key]);
        $cat = trim($cat);
 if($cat !=NULL)
             {
                  $stmt = $con->prepare('UPDATE wallet SET `Status`=" " where `Id`=? AND `bags`="'.$cat.'" AND `Status`="Hold" ');
                 $stmt->bind_param("s", $_SESSION['id']);
                 $stmt->execute();
                 echo "<script type='text/javascript'>location.href = 'cards.php';</script>";

  }
  }
}

 ?>

现在我想在用户关闭浏览器或在window.onbeforeunload 的帮助下返回浏览器时执行相同的查询,所以请告诉我如何在此事件中设置更新代码。

<script>
var areYouReallySure = false;
    function areYouSure() {
    if(allowPrompt){
        if (!areYouReallySure && true) {
            areYouReallySure = true;
            var confMessage = "are you sure to do this";
            return confMessage;
        }
    }else{
        allowPrompt = true;
    }
}

var allowPrompt = true;
window.onbeforeunload = areYouSure;

</script>

【问题讨论】:

    标签: javascript jquery dom-events onbeforeunload window.onunload


    【解决方案1】:

    您可以在离开页面之前调用您的代码

    function myfoo(){
             // Write your logic here
               $.ajax({
                url: "Pageurl_that_having_your_update_code",
                dataType: 'json',
                data: {
                    on_timeout: 1
                },
                success: function (r) {}
    });
        }
    

    onbeforeunload:

     window.onbeforeunload = function(){
      myfoo();
      return 'Are you sure you want to leave?';
    };
    

    或 Jquery

    $(window).bind('beforeunload', function(){
      myfoo();
      return 'Are you sure you want to leave?';
    });
    

    【讨论】:

    • 你能告诉我如何将整个查询放入函数 myfoo()
    • @krishna myfoo() 你可以使用 ajax 并像上面一样获得isset($_GET['on_timeout']) 编辑我的代码
    • 这就是我要问的关于先生的问题。我如何在 ajax 中使用 isset($_GET['on_timeout'])...我很困惑 ajax 如何获取值..请帮助我
    • 请查看我在function myfoo(){} 中的上述更改,因为在那里设置了data:{ on_timout:1} 请求,您可以获得按照上述方法编写的更新代码
    • 使用这个 ...function myfoo(){ $.ajax({ url: "index.php?on_timeout=1", dataType: 'json', data: { on_timeout: 1 }, 成功: 函数 (r) {} }); // 在这里写下你的逻辑 console.log('hello'); } window.onbeforeunload = function(){ myfoo(); return '你确定要离开吗?'; };
    猜你喜欢
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多