$http возвращает не то, что нужно.
Доброго времени.
Пытаюсь получить данные через $http.get. Код выглядит так: var users = $http.get('http://puth.com').then(function(response) { return response.data; }); Но вместо результата выборки получаю: Object { then=function(), catch=function(), finally=function()} В чем проблема? |
В цепочке вызовов get->then и т.д., передается объект promise, соответственно он и возвращается в users.
Данные необходимо присваивать в самой функции - users = response.data |
Цитата:
пробовал другие варианты, но результат тот же .factory('getVars', ['$http','$q', function($http, $q) { var items = {}; var last_request_failed = true; var promise = undefined; return { getItems: function(token) { if(!promise || last_request_failed) { promise = $http.get('puth/vars&token=' + token).then(function(response) { last_request_failed = false; items = response.data; return items; },function(response) { // error last_request_failed = true; return $q.reject(response); }); } return promise; } }; }]) |
пропробуй в success
$http({method: 'GET', url: 'puth/vars&token=' + token}). success(function(data, status, headers, config) { console.log(data); }); |
Цитата:
С полученными от после запроса данными необходимо оперировать в методе then или success (который по сути, тот же then, но на вход подаются уже "разбитые" по параметрам данные запроса). Т.е. var users, userPromise = $http.get('http://puth.com'); userPromise.then(function(response) { users = response.data; }); или var users; $http.get('http://puth.com').then(function(response) { users = response.data; }); или, наподобие примера выше, в комменте. var users; $http.get('http://puth.com').success(function(data) { users = data; }); Все примеры выше равнозначны по функциональности. |
jsru_
Проблема не в этом. Внутри success все есть. Задача в том, чтобы присвоить переменной заначение data, для дальнейших операций за пределами success. |
dolpheen
все 3 примера возвращают undefined за пределами функции |
al-teen,
ты должен помнить что данные в аякс запросе не пришли на время выполнения скрипта! это проблема любого аякс запроса, вот вообщем-то, на мой взгляд, нормальный ответ на твой вопрос http://stackoverflow.com/a/14220323/2560165 |
var users = []; $http.get('http://puth.com').then( function( response ){ angular.extend( users, response.data ); } ); |
Часовой пояс GMT +3, время: 04:31. |