2012-04-04 8 views
4

Ich muss eine Post-Anfrage senden, wenn der Benutzer die Seite in welcher Weise verlässt. Bisher ist es das, was ich habe, aber es funktioniert nicht:jQuery Post auf window.unload (Fenster oder Browser schließen)

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

der PHP-Code wurde getestet, indem Sie mit einem Klick-Funktion ersetzt window.unload. Das funktioniert perfekt und aktualisiert alles nach Bedarf, was bedeutet, dass das Problem mit dem $ (window) .unload-Trigger auftritt.

Antwort

5

Sie Ajax-Methode mit Asynchron-Option falsch verwenden müssen, wie folgt aus:

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

Auf diese Weise Browser für die Anforderung warten, bevor sie zu beenden etwas anderes tun.

1

Von jQuery API-Dokumentation

Die genaue Handhabung des Entlastungsereignisses hat sich von Version zu Version von Browsern geändert. Zum Beispiel lösen einige Versionen von Firefox das Ereignis aus, wenn eine Verknüpfung verfolgt wird, aber nicht, wenn das Fenster geschlossen wird. In der Praxis sollte das Verhalten in allen unterstützten Browsern getestet und mit dem proprietären beforeunload-Ereignis verglichen werden.

Es scheint, als ob Sie eine dieser Versionen von Firefox verwenden, die dieses Ereignis anders behandeln. Versuchen Sie das beforeUnload Ereignis wie in der Documentation erwähnt.

-1

Wenn Sie

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

mit diesem ersetzen:

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

und testen, was passiert? Wenn erscheint das Problem ist in $ .post alarmieren ...

Verwandte Themen