Mysql and onbeforeunload

Mysql and onbeforeunload

本文关键字:onbeforeunload and Mysql      更新时间:2023-09-26

嗨,当用户离开我的网站上的页面时,我正在尝试删除 mysql 数据库中的一行,但由于某种原因它不起作用。我知道onbeforeunload有效,因为如果我删除那里的所有内容并只放置alert("test");警报显示。这不能做到吗?我的代码在下面,谢谢你的帮助

爪哇语

<script type="text/javascript">
window.onbeforeunload = function(){ 
    var id = document.reset.id.value;
    $.ajax({
        url: "Resetter.php",
        type: "GET",
        data: {'id':id},
        success: function (response) {
            alert(response);
        }
    });
}
</script>

.PHP

<?PHP
    $id = $_GET['id'];
    $link = mysql_connect('localhost', 'root', 'root');
    mysql_select_db("Colleges");
    $delete = mysql_query("DELETE FROM `Table` WHERE `ID`='" . $id . "'");
    mysql_close();
    die();
?>

由于您要关闭页面,因此您将关闭与服务器的连接,因此它不会等待您的 Ajax 调用完成。这不是onbeforeunload的工作方式。它仅适用于客户端。另请注意,根据我的经验,onbeforeunload可能有点挑剔,并且没有考虑到用户可以离开您的页面的所有方式。

要完成您想要的操作,您必须设置某种长轮询。下面是一个在服务器端使用 PHP 的示例: http://blog.perplexedlabs.com/2009/05/04/php-jquery-ajax-javascript-long-polling/

您还可以使用 Node.js 之类的东西来侦听来自页面的连接和断开连接。

您没有从PHP echo任何内容,因此不会显示$.ajax回调函数中的警报... :)

尝试

<?PHP
    $id = $_GET['id'];
    $link = mysql_connect('localhost', 'root', 'root');
    mysql_select_db("Colleges");
    $delete = mysql_query("DELETE FROM `Table` WHERE `ID`='" . $id . "'");
    mysql_close();
    if($delete) {
        echo "Done";
    } else {
        echo "Not Done";
    }
?>