2012-06-12 10 views
5

Ho uno script jQuery che esegue il polling del mio server per i nuovi dati, ma deve visualizzare un messaggio di errore se non riesce per qualsiasi motivo.jQuery/AJAX: Come determinare quando un host è offline

Qui è la mia richiesta AJAX:

$.ajax({ 
    url: "query.php", // This just runs some MySQL queries and echos the results 
    cache: false, 
    error: function() { 
     $(".status").text("Server is offline."); 
     }, 
    success: function(html) { 
     // Everything went fine, append query results to div 
     } 
}); 

ho scoperto che se rinominarlo query.php quindi è irraggiungibile, la funzione di errore si innesca e viene visualizzato il messaggio. Tuttavia, se prendo il server web offline, la funzione di errore non si attiva.

Come posso adattare il mio codice per rilevare quando l'host è irraggiungibile?

risposta

2

È necessario impostare un timeout basso e la cosa da notare è che il successo verrà comunque chiamato, quindi è necessario verificare se si dispone di dati a quel punto per sapere se è scaduto o meno.

.ajax({ 
    url: "query.php", // This just runs some MySQL queries and echos the results 
    cache: false, 
    timeout: 4000, // 4 seconds 
    error: function() { 
     $(".status").text("Unable to retrieve data."); 
     }, 
    success: function(html) { 
     if (html) { 
      // Everything went fine, append query results to div 
     } 
     else { 
      $(".status").text("Server is offline."); 
     } 
}); 
+0

Ha funzionato! Ho regolato query.php per echo una dichiarazione speciale per jQuery da catturare quando non ci sono risultati, per evitare falsi positivi. – ssh2ksh

Problemi correlati