Al caricamento di un pagina lancio una chiamata ajax per caricare un div.
Questa chiamata esegue uno script in modo asincrono molto complesso che potrebbe richiedere molti secondi (anche minuti a volte).
Il problema è che quando l'utente non vuole aspettare il caricamento di quei dati e vuole cambiare pagina, ad esempio cliccando su un link, il browser non risponde fino a quando la chiamata ajax non viene conclusa.
Vorrei capire come abortire la chiamata.
Ho provato ad usare il metodo abort() ma non ho ottenuto i risultati voluti.
Questo è lo scripte che uso:
Quando clicco sul bottone #btnAbort la chiamata sembra effettivamente abortita, infatti i dati non vengono caricati e appare la scritta "Chiamata stoppata", però se cerco di fare altre operazioni il browser rimane bloccato fino a quando probabilmente lato server la chiamata non è terminata.codice:<script> // funzione per abortire la chiamata function abortAjax(xhr) { if(xhr && xhr.readystate != 4){ xhr.abort(); $("#divDati").html('Chiamata stoppata'); } } $(document).ready(function(){ xhr = $.ajax({ url : "scriptPesante.php", data : { 'id1':'1', 'id2':'2' }, type : "GET", success : function (data,stato) { $("#divDati").html(data); }, error : function (richiesta,stato,errori) { alert("Errore. Stato della chiamata: "+stato); } }); // funzione per abortire la chiamata $("#btnAbort").click(function(){ abortAjax(xhr); }); }); </script>
Qualche idea?

Rispondi quotando
