2013-07-26 45 views
5

Sayfayı terketmeden önce kullanıcıya sormalıyım, onay üzerine sekmeyi kapatın ve hiçbir şey yapmayın. onbeforeunload numaralı telefondan ajax araması yapmak istiyorum.onbeforeloads onbefore unload

Benim tek düşüncesi böyle hem onunload ve onbeforeunload için işleyiciler yazmak oldu:

window.onbeforeunload = function(){ 
    return 'Are you sure you want to leave?'; 
}; 
window.onunload = function(){ 
    $.get(
     "http://www.mysite.com/php/myhandler.php", 
     { data: 1 } 
    ); 
}; 

ama bu Sadece içinde hepsini koyun jsFiddle

+0

Ajax tamamlanmadan önce sayfa iptal ediliyor. Bu, ajax çağrınızın senkronize olması gereken bir durumdur. –

+0

yapıldı !! Kodu deneyin !! –

+0

+ 1, bu konuda hiç düşünmedim –

cevap

1

Bu kemanda iyi çalışır -> Perfectly working fiddle!!!

function warning(){ 
      if(true){ 
       return "You are leaving the page"; 
       $.ajax({ 
         url: "test.php", 
         type: "post", 
         data: values to send 
         }) 
      } 
     } 
     window.onbeforeunload = warning; 
+0

Ama kullanıcı – Nikita240

+0

çıkmadan önce sormaz Evet, kullanıcı tamamsa, aramayı yap ve kapat sekmesi değilse, o zaman sadece – Nikita240

+0

hiçbir şey yapmazsanız, iptal edildiğinde sekmeyi açık tutmak ister misiniz? –

0

çalışmak görünmüyordu onbeforeunload

window.onbeforeunload = function(){ 
    $.get(
     "http://www.mysite.com/php/myhandler.php", 
     { data: 1 } 
    ); 
    return 'Are you sure you want to leave?'; 
}; 
+0

Ama bu sonuç ne olursa olsun AJAX'ı yürütmeyecek mi? Sadece kullanıcı gerçekten ayrılırsa çağrıyı yürütmesini istiyorum. – Nikita240

+0

Bunu şu şekilde yapın: Eğer AJAX yapmıyorsanız ve AJAX yoksa, false döndürün. –

+1

Bunu mu demek istediniz? window.onbeforeunload = function() { if (istemi ('Ayrılmak istediğinize emin misiniz?')) { $ .get ( "myphp.php", {val: 1} ); } else false; }; – Nikita240

İlgili konular