JQuery ajax-вызов получает код состояния 0 с ошибкой

Я пытаюсь позвонить на Petfinder.com, чтобы получить список наших питомцев. URL-адрес 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);
             }

         }
     });

person Judith Adabie    schedule 13.02.2013    source источник
comment
Вы получаете ошибку Same Origin в своей консоли? Вы используете IE? Запросы между источниками необходимо отправлять либо в виде JSONP (для которых требуется правильный ответ JSONP), либо с включенным CORS, для которого требуется, чтобы сервер поддерживал CORS, а браузер поддерживал CORS. jQuery не поддерживает CORS в IE ‹ 10.   -  person Kevin B    schedule 13.02.2013
comment
В клиентской библиотеке API Trello есть хороший пример поддержки CORS: trello.com/1/client.coffee   -  person forivall    schedule 13.02.2013
comment
возможный дубликат Ajax jqXHR.status==0 исправить ошибку   -  person Yan Foto    schedule 09.07.2015


Ответы (2)


Вы должны убедиться, что когда сервер отправляет вам ответ об ошибке, он также отправляет вместе с ним правильные заголовки CORS.

Если это не так, браузер не позволит вашему коду JavaScript видеть любую информацию, поступающую из этого домена, даже код состояния.

person Kamil Szot    schedule 25.08.2014

Вы столкнулись с проблемой XSS CORS. Лучшее решение — настроить прокси на вашем веб-сервере и направить вызов AJAX через него.

person Michael Marr    schedule 13.02.2013
comment
Как упоминал КевинБ; Я думаю, вы имели в виду CORS, а не XSS - person Alexander; 13.02.2013
comment
Я использую шлюз AWS Api для своего приложения... и получаю ту же проблему... можете ли вы предложить предпочтительную политику CORS, чтобы устранить эту ошибку. Сейчас я тестирую его, используя простой вызов ajax, который запускается при событии «onload» тега body. - person Abdeali Chandanwala; 16.08.2016