2012-04-06 5 views
1

Um zu testen, was passiert, wenn ich eine nicht vorhandene Ressource zu laden versuchen (auf dem gleichen Host wie mein Web-Server), ich den folgenden Code ein:

var wrongURL = "http://foo/bar.json"; // non-existent resource 
$.ajax({ 
    url: wrongURL, 
    dataType: 'json', 
    success: function(jsonResponse, textStatus, jqXHR) { 
     $.('#divOfInterest').html("you should never see this"); 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     $.('#divOfInterest').html("sorry, could not find URL"); 
    } 
}); 
// remainder of code... 

Statt meine div sorry, could not find URL die Meldung sehen, erhalte ich eine Konsole Fehler:

GET http://foo/bar.json 404 (Not Found) - bar.json 

Alles, was innerhalb des error Anruf und nach dem $.ajax() Block (dh // remainder of code) erhalten nicht

ausgeführt

Es sieht so aus, als ob mein Browser (Safari 5.1.5) beim Fehler 404 hängen bleibt und die Funktion vorzeitig verlässt.

Wie bekomme ich den Fehler elegant behandeln und den Rest meines Codes ausführen?

+0

Es funktioniert auch auf Safari 5.0.2 – ocanal

Antwort

1

Ersetzen Sie einfach $.('#divOfInterest') mit $('#divOfInterest'): D

Demo: http://jsfiddle.net/9Ua8J/

+0

Nein, dieser Fehler ist offensichtlich nicht auf den Fehler bezogen. – freakish

+0

Mit den Punkten zeigt es den Fehler: 'XML-Filter wird auf Nicht-XML-Wert angewendet 'ohne Ausgabe, siehe hier: http://jsfiddle.net/SuHDP/ – stewe

+1

Ja, das geht davon aus, dass der Ajax-Aufruf tatsächlich die Rückrufe einträgt . Aber lesen Sie die Frage sorgfältig durch: Das JavaScript stürzt ab, wenn Sie versuchen, eine Verbindung zu einer nicht vorhandenen Ressource herzustellen. Außerdem habe ich es geschafft, den Fehler in Chrome (mit korrektem JS) zu reproduzieren, obwohl jsFiddle funktioniert, was noch seltsamer ist. – freakish

2

Von meinem Verständnis Sie einen Server tatsächlich benötigen einen Fehlerstatus für die Fehlerfunktion zurück ausgeführt werden.

Wenn Sie zum Beispiel ein JSON-Objekt für einen nicht vorhandenen Benutzer in Soundcloud anfordern, erhalten Sie einen 404-Fehler vom Server.

Wenn Sie jedoch den vollständigen URI falsch eingeben, wird überhaupt keine Ressource zurückgegeben und auch kein Statuscode.

+0

Eigentlich gibt es einen Status, es ist Null. überprüfe einfach jqXHR.status === 0 – Hoffmann

Verwandte Themen