0

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

Javascript

<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();
?>
4

2 回答 2

3

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

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

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

于 2012-08-19T06:24:57.963 回答
0

您没有echo从您的任何内容中获取任何信息,因此未显示回调函数中PHP的警报... :)$.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";
    }
?>
于 2012-08-19T06:18:11.437 回答