Я пытаюсь получить самый быстрый и самый прямой способ получить некоторые данные из 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, я не могу. Ниже приведены два вызова и ошибки, которые я получаю.
Использование 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 не был вызван (...)
Использование углового
$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}
Обер: Я вижу возвращение, но он представлен как ошибка, поэтому я не могу манипулировать данными. Смотри!
Важный! У меня нет доступа к API, поэтому мы будем рады решениям, которые останавливают некоторые из предлагаемых методов (jQuery или Angular).
Проблема была решена путем включения CORS в API.
Используйте инжекторы $ 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);
}