2010-12-15 6 views
0

ユーザーが放置しようとしたときにコードを実行する必要があるのは、ファイルを削除する必要があることを知らせるサーバーへの単純な呼び出しであり、応答はしませんが、 tコール。アンロード機能でAJAX呼び出しを実行

    $(window).unload(function(){ 
          alert(1) 
          window.key = document.getElememtsByTagName('body')[0].getAttribute('key'); 
          catcher('clearBt');//The catcher makes the AJAX call like i show below. 
        }); 
//This is the call to the server. 
     phone.open(method, address, true); 
     phone.setRequestHeader("Content-type", 'application/x-www-form-urlencoded'); 
     phone.send(reqStr); 

私はにonbeforeunloadてみてくださいましたが、結果は同じだった...

+0

ありがとうこの方法で解決しましたか?警報の後にセミコロンが必要です(1)。 – Chocula

+0

私は何も問題がありません... – hidura

答えて

0

AJAXは、デフォルトでは非同期であり、文書のアンロードを終了します。代わりに同期呼び出しとして実行してみてください。

あなたは

phone.open(method, address, false /*synchronous*/); 

にこれを変更する必要があり、ページが終了する要求を待つ必要があります。

+0

しかし、ページは応答を待つことはありませんか? – hidura

+0

そうするべきです。同期とは、要求が完了するまでスクリプトが待機することを意味します。そしてあなたがそれを返さない限り、文書は依然としてアクティブでなければなりません。 – wazz3r

1

偉大な、私はMagento Checkoutで同じ問題がありました。私は

var responseCancel= jQuery.ajax({ 
     url:'<?php echo Mage::getBaseUrl() . 'checkout/onepage/callWsCancelOrder'; ?>', 
     cache: false, 
        async: false 
     }).responseText; 

はあなたがJavaScriptエラーを取得している