0

pageleave()ユーザーがページを終了する前に関数を呼び出す必要があります。しかし、正しく動作しないようです。Web を数時間検索しましたが、解決策が見つかりません。これが私が思いついたコードです。ページのアンロード時ではなく、ページのロード時に実行されます。

window.onbeforeunload = pageleave;

        function pageleave() {
            $.post("<?php echo dirname( get_bloginfo('stylesheet_url') ); ?>/ajax/videocanle.php", { videoID: "<?php echo $videoID; ?>" },
                function(data) {
                    if ( data != "\nsuccess"){
                        alert ("Sorry but there was an unexpected error, please try again");
                    }

                });

        }

これは現在のリビジョンですが、ページがアンロードされる前にまだ関数を実行していません。この機能は機能します。単純な入力ボタンでテストしました。

<input type="button" value="test function" onclick="pageleave()" />
4

4 に答える 4

5

関数を呼び出した結果ではなく、関数への参照を割り当てる必要があります (これが の()動作です)。以下を削除し()ます。

window.onunload = pageleave();

( のonbeforeunload代わりにイベントを使用し、onunload何らかの確認メッセージを返して、Ajax リクエストが完了する可能性があるようにすることもできます。)

于 2012-06-21T01:07:47.117 に答える
3
window.onunload=pageleave;

        function pageleave() {
            $.post("<?php echo dirname( get_bloginfo('stylesheet_url') ); ?>/ajax/videocanle.php", { videoID: "<?php echo $videoID; ?>" } );    
        }
于 2012-06-21T01:07:56.013 に答える
2

関数への参照を渡したい。あなたの例では、割り当てステートメントで関数を呼び出していました。これを試して:

window.onunload = function() {
  $.post("<?php echo dirname( get_bloginfo('stylesheet_url') ); ?>/ajax/videocanle.php", { 
    videoID: "<?php echo $videoID; ?>"
  });    
};
于 2012-06-21T01:11:06.250 に答える