4

ユーザーがいずれかの方法でページを離れたときに、POSTリクエストを送信する必要があります。これまでのところ、これは私が持っているものですが、機能していません:

$(window).unload(function(){        
 $.post("http://localhost/project/quizTime.php",{action:"updateTime",userID:userid,quizID:quizid,newTime:currentTime*1000,rand:Math.random()},function(time)
    {
    });
});

PHPコードは、window.unloadをクリック関数に置き換えることでテストされました。これは完全に機能し、必要に応じてすべてを更新します。つまり、問題はその$(window).unloadトリガーにあります。

4

4 に答える 4

5

次のように、非同期オプションをfalseに設定してajaxメソッドを使用する必要があります。

$.ajax({
    type: 'POST',
    async: false,
    url: 'YOUR_URL',
    data: 'YOUR_DATA'
});

このようにして、ブラウザはリクエストが終了するのを待ってから他のことをします。

于 2012-04-04T13:14:29.480 に答える
1

$ .postは非同期タスクであるため、ブラウズは応答が来るまで待機しません。このソリューションで与えられた答えに従ってください- $(window).unloadWebページを離れる前にAJAX呼び出しが終了するのを待ちます

于 2012-04-04T12:56:29.653 に答える
1

jQueryAPIドキュメントから

アンロードイベントの正確な処理は、ブラウザのバージョンごとに異なります。たとえば、Firefoxの一部のバージョンでは、リンクがたどられたときにイベントがトリガーされますが、ウィンドウが閉じられたときにはトリガーされません。実際の使用では、動作はサポートされているすべてのブラウザでテストし、独自のbeforeunloadイベントと対比する必要があります。

このイベントを異なる方法で処理するFirefoxのバージョンの1つを使用しているようです。ドキュメントに記載されているように、 beforeUnloadイベントを試してください。

于 2012-04-04T12:58:30.927 に答える
-1

交換する場合

$(window).unload(function(){        
 $.post("http://localhost/project/quizTime.php",{action:"updateTime",userID:userid,quizID:quizid,newTime:currentTime*1000,rand:Math.random()},function(time)
    {
    });
});

これとともに:

$(window).unload( function () { alert("Bye now!"); } );

とテスト、何が起こりますか?警告が表示された場合、問題は$.post..にあります。

于 2012-04-04T13:04:12.307 に答える