2009-04-15 8 views
40

Ich verwende jQuery .load() Methode, um einige Daten abzurufen, wenn ein Benutzer auf eine Schaltfläche klickt.Fehler in jQuery load() -Methode

Nachdem der Ladevorgang erfolgreich abgeschlossen wurde, zeige ich das Ergebnis in einer <div>.

Das Problem ist, manchmal tritt ein Fehler in load() beim Abrufen der Daten.

Wie kann ich einen Fehler in load() bekommen?

Antwort

5

load() bietet einen Rückruf.

Rückruf.
Die Funktion wird aufgerufen, wenn die Ajax-Anforderung abgeschlossen ist (nicht unbedingt erfolgreich).

Dies ist wie getan IIRC. (Getestet haben es nicht)

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

Das erste Argument der Funktion IS responseText. Keine Notwendigkeit, XMLHttpRequest.responseText zu verwenden ... –

10

Neben einen Rückruf an die Last() Funktion übergeben, wie Ólafur Waage schon sagt, können Sie auch registrieren „global“ Fehler-Handler (global wie in global für alle Ajax-Aufrufe auf der Seite).

Es gibt mindestens zwei Möglichkeiten, global Ajax Fehler-Handler registrieren:

Register nur die Fehlerbehandlung mit ajaxError():

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

Oder ajaxSetup() verwendet einen Fehlerhandler und andere Eigenschaften zum Einrichten auf die gleiche Zeit:

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

load() documentation.

Nur ein wenig Hintergrund, wie ein Ladefehler passiert ...

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

Edit: einen anderen Pfad als Stammpfad hinzugefügt, wie durch Kommentare angefordert.

+0

Danke altCongnito.it ist Arbeit! BTW, kann ich eine andere verwandte Frage stellen? ein anderes Problem ist Dateipfad! Ich benutze asp.net. Ich schreibe load() Code in die Master-Seite. Parameter URL ist wie feedsx.aspx. es ist Arbeit, wenn Inhaltsseiten unter Wurzelordner sind. Aber wenn Inhaltsseiten unter anderen Unterordnern nicht arbeiten. hilfe –

+0

danke für den link zu den jquery docs. Ich wusste nicht, dass sie überhaupt existierten! –

+0

Dank - Ladefehler sind meist auf ein Problem beim Laden der Zielseite zurückzuführen. – Resh32

0

Elektrische Toolbox hat einen Artikel mit dem Namen "Loading content with jQuery AJAX and dealing with failures", der Ihre Frage zu beantworten scheint.

Anscheinend die Callback-Funktion, die Sie angeben, übergibt die Antwort, Status und XmlHttpRequest -Objekt, so dass Sie den Status Ihrer AJAX-Anfrage ermitteln und die Bedingung entsprechend behandeln können.