2009-04-15 4 views
40

Sto utilizzando il metodo .load() di jQuery per recuperare alcuni dati quando un utente fa clic su un pulsante.Come rilevare l'errore nel metodo load() di jQuery

Al termine del caricamento, viene visualizzato il risultato in <div>.

Il problema è che a volte si verifica un errore in load() durante il recupero dei dati.

Come posso rilevare un errore in load()?

risposta

5

load() offre una richiamata.

Chiamata.
La funzione chiamata quando la richiesta ajax è completa (non necessariamente riuscita).

Questo è come è stato fatto IIRC. (Non hanno provato)

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) { 
     // XMLHttpRequest.responseText has the error info you want. 
     alert(XMLHttpRequest.responseText); 
}); 
+7

Il primo argomento della funzione IS responseText. Non c'è bisogno di usare XMLHttpRequest.responseText ... –

10

Oltre il superamento di un callback per la funzione di caricamento() come suggerisce Ólafur Waage, è anche possibile registrare gestori di errori "globali" (globale come in globale per tutte le chiamate Ajax pagina).

Ci sono almeno due modi per registrare gestori di errori Ajax globali:

Registrati solo il gestore degli errori con ajaxError():

$.ajaxError(function(event, request, settings) { 
     alert("Oops!!"); 
}); 

In alternativa, utilizzare ajaxSetup() per impostare un gestore di errori e altre proprietà a allo stesso tempo:

$.ajaxSetup({ 
    timeout: 5000, 
    error: function(event, request, settings){ 
     alert("Oops!"); 
    } 
}); 
66

load() documentation.

Solo un po 'di storia su come un errore di caricamento succede ...

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) { 
     if (textStatus == "error") { 
      return "oh noes!!!!"; 
     } 
}); 

Edit: Aggiunto un percorso diverso dal percorso principale come richiesto dai commenti.

+0

grazie altCongnito.it è lavoro! btw, posso fare un'altra domanda correlata? un altro problema è il percorso del file! Io uso asp.net. scrivo codice load() nella pagina Master. l'URL del parametro è come feedsx.aspx. è funzionante quando le pagine di contenuto sono nella cartella principale. Ma se le pagine di contenuto sono sotto un'altra sottocartella non funzionano. aiuto –

+0

grazie per il link ai documenti jquery. Non sapevo nemmeno esistessero! –

+0

Grazie - i problemi di caricamento sono principalmente dovuti a un problema durante il caricamento della pagina di destinazione. – Resh32

0

La casella degli strumenti elettrici contiene un articolo chiamato "Loading content with jQuery AJAX and dealing with failures" che sembra rispondere alla tua domanda.

Apparentemente la funzione di callback specificata viene passata la risposta, lo stato e l'oggetto XmlHttpRequest, consentendo di determinare lo stato della richiesta ajax e gestire la condizione di conseguenza.