Qualcuno mi sa dire perché il metodo $.ajaxstop() di jquery non funziona su server altervista? Gestisco 3 siti diversi e in nessuno dei tre funziona il metodo $.ajaxstop(). Invece non ho problemi su altri server tipo aruba. Ho utilizzato tutti i "callbacks" delle funzioni ajax di jquery per seguire passo passo l'andamento delle chiamate, e non ci sono errori, è solo $.ajaxstop() che non risponde.
Il mio codice è questo:
Codice PHP:
/* ATTENTION! MAKE SURE YOU DO ALL AJAX CALLS ON DOCUMENT READY
OTHERWISE AJAXSTART WON'T BE ABLE TO FIND THE DIV TO SHOW
AND WILL RETURN AN ERROR! */
$(document).ajaxStop(function(event, request, settings) {
$("#debuglog").append("<li style='font-weight:bold;'>Ajax requests have all finished.</li>");
$("div#attesa").hide();
});
$(document).ajaxStart(function(event, request, settings) {
$("#debuglog").append("<li style='font-weight:bold;'>Ajax requests queuing...</li>");
$("div#attesa").show();
});
$(document).ajaxError(function(event, request, settings){
$("#debuglog").append("<li style='color:Red;>Error requesting page " + settings.url + "</li>");
});
$(document).ajaxComplete(function(event, request, settings){
$("#debuglog").append("<li style='color:Orange;';>Request Complete. "+ settings.url +"</li><hr />");
});
$(document).ajaxSend(function(event, request, settings){
$("#debuglog").append("<li style='color:Blue;'>Starting request at " + settings.url + "</li><hr />");
});
$(document).ajaxSuccess(function(event, request, settings){
$("#debuglog").append("<li style='color:Green;'>Successful Request! "+ settings.url +"</li>");
});
E ho questi risultati:
Ajax requests queuing...
Starting request at /include/ajax/getnewstitles.php?latestnews=true
Starting request at /include/ajax/getnewstitles.php
Starting request at /include/ajax/diocesannewstitles.php
Starting request at themes/glorioso/ajax/ajax_fc.php
Starting request at /include/ajax/diocesannewstitles.php
Successful Request! /include/ajax/getnewstitles.php
Request Complete. /include/ajax/getnewstitles.php
Successful Request! /include/ajax/getnewstitles.php?latestnews=true
Request Complete. /include/ajax/getnewstitles.php?latestnews=true
Successful Request! themes/glorioso/ajax/ajax_fc.php
Request Complete. themes/glorioso/ajax/ajax_fc.php
Successful Request! /include/ajax/diocesannewstitles.php
Request Complete. /include/ajax/diocesannewstitles.php
Successful Request! /include/ajax/diocesannewstitles.php
Request Complete. /include/ajax/diocesannewstitles.php
Dovrei vedere anche il messaggio "Ajax requests have all finished" alla fine e invece non lo vedo, e il mio "div" con il gif animato dovrebbe scomparire ma non scompare.
E' possibile che ci sia qualcosa sul server altervista che è incompatibile con $.ajaxStop()? Perché guardando a firebug non ho altri errori e verificando l'integrità del sito con il w3c validator vedo che il mio codice è pulito... E mi funziona su altri server con lo stesso codice!
---
hmmm invece disabilitando la "barra sociale" di google friend connect su un sito (consultapg33.altervista.org) pare che l'ajaxStop() riprende a funzionare; su un altro sito che sta su server aruba invece funziona anche con la barra sociale di GFC. Un altro sito su altervista ( http://johnrdorazio.altervista.org ) ha la barra disabilitata ma l'ajaxStop() non risponde... Non ho capito ancora quale può essere l'effettivo errore che lo blocca.
---
Finalmente ho trovato la vera causa, non c'entra col server altervista, si trattava di "jQuery fullcalendar" che cercava di accedere a un mio calendario di google utilizzando l'indirizzo pubblico, mentre il calendario non era reso pubblico. Bastava utilizzare invece l'indirizzo privato e tutto è tornato a funzionare normalmente. Sono mesi e mesi che cercavo di capire il problema, è un sollievo averlo trovato!