5

我正在尝试致电 Petfinder.com 以获取我们的宠物清单。网址是http://api.petfinder.com/shelter.getPets?key=xxxxx&id=CA1469&format=json

该 url 似乎可以很好地返回 JSON。但是当我尝试拨打电话时,我收到“错误”和状态码 0。我尝试使用 jsonp 导致状态为 200 但解析错误。如果我更改为 xml,我会得到状态 0 和“错误”的结果。

 $.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);
             }

         }
     });
4

2 回答 2

2

您需要确保当服务器向您发送错误响应时,它还会同时发送正确的 CORS 标头。

如果没有,浏览器将不允许您的 JavaScript 代码查看来自该域的任何信息,甚至是状态代码。

于 2014-08-25T13:39:21.840 回答
1

您遇到了XSS CORS 问题。最好的解决方案是在您的 Web 服务器上设置一个代理,并通过它路由 AJAX 调用。

于 2013-02-13T19:00:15.083 回答