Ko uporabnik zapre okno, bi rad znotraj onbeforeunload/onunload dogodka sprožil ajax klic za statistiko. Jquery omogoča, da nastavim async na false in bo čakal da ajax klic vrne rezultat. Drugače do klica sploh ne bo prišlo, ga prej prekine. Problem je, ker lahko čaka na rezultat tudi sekundo ali več in do takrat uporabniku ne zapre okna.
Prišel sem na idejo, da bi dodal zraven še en ajax klic na neobstoječ url in temu klicu nastavim async false, pravemu pa true. Ajax klic v približno 50ms sekundah vrne rezultat, da url ne obstaja. Kar je dovolj, da sproži na strežnik ajax klic pravega url-ja (ne rabim odgovora, samo da se sproži).
window.onbeforeunload = (function(){
jQuery.ajax({
type: "GET",
url: statsUrl,
data: "windowClosed=1&id="+JSON.stringify(sendData),
async:true
});
var dummyUrl = 'http://'+Math.random().toString(36).substring(2)+'.com';
jQuery.ajax({
type: "GET",
url: dummyUrl,
async:false
});
}());
Vprašanje: Malo me skrbi če zna bit kaka težava s tem neobstoječim url-jem. A vidi kdo kak potencialen problem?