JQuery ajax调用获取状态代码0“错误”

时间:2013-02-13 18:54:52

标签: jquery ajax xmlhttprequest jqxhr

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

该网址似乎返回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);
             }

         }
     });

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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