[英]Angular: Pass params to $http.get
我正在尝试将params对象传递给$http.get()
服务。 我的参数看起来像这样:
var params = {
one: value,
two: value
}
而我正试图将它们传递到我的函数中:
$http.get('/someUrl', params)
.success(function(data) {
// stuff
})
.error(function(data) {
// error stuff
});
这是正确的方法吗?
$http
的第二个参数是一个配置对象( 参见文档 )。 在其他属性中, config对象接受params
属性:
{Object.<string|Object>}
- 将使用paramSerializer序列化并作为GET参数附加的字符串或对象的映射。 因此,您必须传递参数
var config = {
params: {
one: value,
two: value
}
}
$http.get('/someUrl', config).then(...)
假设参数的值分别为'1'和'2', $http
将向以下url发送GET请求:
/someUrl?one=1&two=2
作为旁注,尽量避免在$http
上使用success
和error
函数。 从角度1.4.4开始,它们已被弃用。 then
使用方法成功和错误回调,或者只使用成功回调和catch
。
对于实际呼叫,请使用可以注入所需控制器的工厂或服务。这是一个工厂传递参数的示例
.factory('Chats', function ($http, $rootScope, $stateParams) {
return {
all: function () {
return $http.get('http://ip_address_or_url:3000/chats', { params: { user_id: $rootScope.session } })
}
};
});
在您的控制器中,您可以使用此类服务
.controller('ChatsCtrl', function ($scope, Chats) {
Chats.all().success(function (response) {
$scope.chats = response;
})
})
我最近遇到过类似的问题,我不得不添加一些额外的细节来请求(我使用了一些标题的接受答案):
$http.get(url, {
params: {
paramOne: valueOne,
paramTwo: valueTwo,
...
},
headers: {
'key': 'value'
},
// responseType was required in my case as I was basically
// retrieving PDf document using this REST endpoint
// This is not required in your case,
// keeping it for somebody else's reference
responseType: 'arraybuffer'
}).success(
function(data, status, headers, config) {
// do some stuff here with data
}).error(function(data) {
// do some stuff here with data
});
$ http 文档表明$ http.get方法的第二个参数是一个可以传递“param”对象的对象。
尝试这样的事情:
$http.get('/someUrl', {params: params})
.success(function(data) {
// stuff
})
.error(function(data) {
// error stuff
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.