Запрос в jQuery ($ .ajax) и Angular ($ http) не работает

0

Я пытаюсь получить самый быстрый и самый прямой способ получить некоторые данные из API. Используя Postman, я могу так просто просто дать GET в URL-адресе (http://www.wsfebracis.com.br/Json/ListarGrupos) и получить:

{
  "error": 0,
  "grupos": [
    {
      "Titulo": "A inteligência emocional do seu corpo",
      "ID": 1
    },
    {
      "Titulo": "Sua inteligência emocional em família",
      "ID": 2
    },
    {
      "Titulo": "Sua inteligência emocional em sociedade",
      "ID": 3
    },
    {
      "Titulo": "Sua inteligência emocional no trabalho",
      "ID": 4
    },
    {
      "Titulo": "Sua inteligência emocional nas férias",
      "ID": 5
    },
    {
      "Titulo": "Sua inteligência emocional no dia a dia",
      "ID": 6
    }
  ]
}

Но когда я пытаюсь сделать GET с помощью jQuery или Angular, я не могу. Ниже приведены два вызова и ошибки, которые я получаю.

  1. Использование jQuery

    $.ajax({
      type: 'GET',
      dataType: 'JSONP',
      url: 'http://www.wsfebracis.com.br/Json/ListarGrupos/',
      success: function(data) {
        console.log(data);
      },
      error: function(e) {
        console.log(e);
      }
    }).done(function( data ) {
      console.log("done ", data);
    })
    .fail( function(xhr, textStatus, errorThrown) {
        console.log('erro');
        console.log(xhr.responseText);
        console.log(textStatus);
        console.log(errorThrown);
    });
    
  • Объект {readyState: 4, статус: 200, statusText: "success"}
  • Эрро
  • не определено
  • parsererror
  • Ошибка: jQuery111108493785087484866_1448911631891 не был вызван (...)
  1. Использование углового

    $http.jsonp('http://www.wsfebracis.com.br/Json/ListarGrupos/ListarGrupos')
    .success(function(data, status, headers, config) {
      $log.error(data);
      $log.error(status);
      $log.error(headers);
      $log.error(config);
    })
    .error(function(data, status, headers, config) {
      $log.log(data);
      $log.log(status);
      $log.log(headers);
      $log.log(config);
    });
    
  • не определено
  • (d) {b || (b = ad (a)); return d? (d = b [F (d)], void 0 === d && (d = null), d): b}
  • Object {method: "JSONP", transformRequest: Array 1, transformResponse: Array 1, url: " http://www.wsfebracis.com.br/Json/ListarGrupos ", заголовки: Object}

Обер: Я вижу возвращение, но он представлен как ошибка, поэтому я не могу манипулировать данными. Смотри! Изображение 174551

Важный! У меня нет доступа к API, поэтому мы будем рады решениям, которые останавливают некоторые из предлагаемых методов (jQuery или Angular).

  • 0
    Вы возвращаете JSON, а не JSONP, есть разница
  • 1
    Итак, почему вы отправляете запрос JSONP на веб-странице и запрос JSON в почтальоне? это два очень разных типа данных. Один из них приводит к тому, что запрос XHR ожидает json, а другой - к запросу сценария, ожидающему javascript.
Показать ещё 4 комментария

2 ответа

0
Лучший ответ

Проблема была решена путем включения CORS в API.

-2

Используйте инжекторы $ http, $ q и метод обещания в угловом приложении

Пример можно найти ниже

angular
        .module('yourApp')
        .factory('dataService', dataService);

    dataService.$injector = ['$http', '$q'];function dataSvc($http, $q) {
     var service = {
     getListGroupsSvc :getListGroupsSvc};return service;



  function getData(url) {
        var deferred = $q.defer();

        $http.get(url)
            .then(function (result) {
                deferred.resolve(result.data);
            },
                function (result) {
                    deferred.reject(result);
                });

        return deferred.promise;
    }

Вы можете вызвать вышеуказанную функцию

  function getListGroupsSvc(){

   var url = 'http://www.wsfebracis.com.br/Json/ListarGrupos/ListarGrupos';

   return getData(url);
   }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню