0

こんにちは私は、ユーザーが私のWebサイトにページを残したときに、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これは私の経験では少し厄介なことがあり、ユーザーがページから離れることができるすべての方法を説明しているわけではないことにも注意してください。

あなたが望むことを達成するために、あなたはある種の長いポーリングを設定しなければならないでしょう。サーバー側で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 に答える