2013-02-13 14 views
5

Ich versuche Petfinder.com anrufen, um eine Liste unserer Haustiere zu bekommen. Die URL ist http://api.petfinder.com/shelter.getPets?key=xxxxx&id=CA1469&format=jsonJQuery Ajax Anruf erhalten Statuscode 0 "Fehler"

Die URL scheint die JSON in Ordnung zurückzugeben. Aber wenn ich versuche, den Anruf zu machen, bekomme ich "Fehler" und Statuscode 0. Ich habe versucht, jsonp zu verwenden, was zu einem Status von 200, aber einem Parse-Fehler führt. Wenn ich zu xml ändere, habe ich das Ergebnis von Status 0 und "Fehler".

$.ajax({ 

     url: "http://api.petfinder.com/shelter.getPets?key=xxxx&id=CA1469&format=json", 
     dataType: "json", 
     type: "GET", 
     success: function (data) { 
      alert("hi"); 
     }, 
     error: function (jqXHR, exception) { 
      if (jqXHR.status === 0) { 
       alert('Not connect.\n Verify Network.'); 
      } else if (jqXHR.status == 404) { 
       alert('Requested page not found. [404]'); 
      } else if (jqXHR.status == 500) { 
       alert('Internal Server Error [500].'); 
      } else if (exception === 'parsererror') { 
       alert('Requested JSON parse failed.'); 
      } else if (exception === 'timeout') { 
       alert('Time out error.'); 
      } else if (exception === 'abort') { 
       alert('Ajax request aborted.'); 
      } else { 
       alert('Uncaught Error.\n' + jqXHR.responseText); 
      } 

     } 
    }); 
+1

Erhalten Sie einen Fehler "Same Origin" in Ihrer Konsole? Verwenden Sie IE? Cross-Ursprungsanforderungen müssen entweder als JSONP gesendet werden (für die eine ordnungsgemäße JSONP-Antwort erforderlich ist) oder bei aktivierter CORS-Funktion, bei der der Server CORS unterstützt und der Browser CORS unterstützt. jQuery unterstützt CORS in IE <10 nicht. –

+0

Die API-Client-Bibliothek von Trello hat ein gutes Beispiel dafür, wie sie mit der CORS-Unterstützung umgehen: https://trello.com/1/client.coffee – forivall

+0

mögliches Duplikat von [Ajax jqXHR.status == 0 fix error] (http://stackoverflow.com/questions/23802474/ajax-jqxhr-status-0-fix-error) –

Antwort

1

Sie laufen in ein Problem XSS CORS. Die beste Lösung besteht darin, einen Proxy auf Ihrem Webserver einzurichten und den AJAX-Aufruf durch diesen zu leiten.

+1

Wie KevinB erwähnt; Ich denke du meinst CORS, nicht XSS – Alexander

+0

@Alexander zugestimmt. –

+0

Ich verwende AWS Api Gateway für meine Anwendung ... und bekomme das gleiche Problem ... können Sie eine bevorzugte CORS-Richtlinie vorschlagen, so dass dieser Fehler behoben ist. Ich teste es jetzt mit einem einfachen Ajax-Aufruf, der beim "onload" -Ereignis des Body-Tags ausgeführt wird –

2

Sie müssen sicherstellen, dass, wenn der Server Ihnen eine Fehlerantwort sendet, sie auch richtige CORS-Header mitschickt.

Wenn es nicht Browser erlaubt Ihren JavaScript-Code keine Informationen aus dieser Domäne, auch Statuscode zu sehen.