解决方案在浏览器关闭时使用ajax执行查询

时间:2016-03-08 05:42:30

标签: javascript php ajax

我正在尝试在用户关闭浏览器时更新我的​​数据库。我正在使用ajax和window.onbeforeunload。这是代码。代码不执行。建议我出错的地方

First.php

<script type="text/javascript">

window.onbeforeunload = function() {
$.ajax({
    url: 'logout.php',
    type: 'POST',
    async: false,
    timeout: 4000
});
};
</script>

logout.php

    <?php
$username = "root";
$password = "";
$hostname = "localhost"; 

$dbhandle = mysql_connect($hostname, $username, $password) 
 or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";


$selected = mysql_select_db("examples",$dbhandle) 
  or die("Could not select examples");

$result =  mysql_query("DELETE FROM cars WHERE id='1'");
mysql_close($dbhandle);
?>

2 个答案:

答案 0 :(得分:2)

试试这个:上面的代码应创建一个文件 logger.txt 并在关闭窗口时写入。

<强> First.php:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script type="text/javascript">

window.addEventListener("beforeunload", function (e) {
    $.ajax({
        url: 'logout.php',
        type: 'POST',
        async: false,
        timeout: 4000
    });
})
</script>

logout.php //您可以在此处添加代码

$filename = "logger.txt";
$fd = fopen($filename, "a");
$dump="it came here";

$str = sprintf("[%s] %s", date("Y-m-d H:i:s"), $dump);

fwrite($fd, $str . "\n");
fclose($fd);

答案 1 :(得分:1)

请尝试以下操作并检查它是否有效!

$(window).bind('unload', function(){
            $.ajax({
                url: 'logout.php',
                type: 'GET',
                async: false,
                timeout: 4000
            });
        });