0

ユーザーがページを離れたときにバックエンド プロセスを実行する必要があります。私のJSコードは正常に動作します:

if (window.addEventListener) {  // all browsers except IE before version 9
    window.addEventListener("beforeunload", OnBeforeUnLoad, false);
}
else {
    if (window.attachEvent) {   // IE before version 9
        window.attachEvent("onbeforeunload", OnBeforeUnLoad);
    }
}

function OnBeforeUnLoad () {
    return "Are you sure?";
}

しかし、私のOnBeforeUnLoad関数には$.ajax、ブラウザによって自動的にプロンプ​​トが表示されたダイアログでユーザーが [OK] を押したときに、サーバー側で何かを行うための呼び出しが含まれている必要があります。このようにするとうまくいきません:

function OnBeforeUnLoad () {
   if (confirm("Are you sure?")){
      $.ajax({
         type:       "POST",
         url:        "../wp-content/scripts/removedemo.php",
         data:       "s="+UserSession.encodedurl,
         success: function(data){}
      });
   }
}

どんな助けでも大歓迎です。

4

1 に答える 1

0

関数を使用setimeoutして、秒単位で実行を遅らせます。コードは次のとおりです。

setTimeout(OnBeforeUnLoad, 10); 

function OnBeforeUnLoad () {
if (confirm("Are you sure?")){
  $.ajax({
     type:       "POST",
     url:        "../wp-content/scripts/removedemo.php",
     data:       "s="+UserSession.encodedurl,
     success: function(data){}
  });
}
}
于 2013-10-14T10:39:43.953 に答える