$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, время: 21:03. |