Angular:将params传递给$ http.get

时间:2015-09-26 16:04:57

标签: javascript angularjs http

我正在尝试将params对象传递给$http.get()服务。我的参数看起来像这样:

var params = {
  one: value,
  two: value
}

我正试图将它们传递到我的函数中:

$http.get('/someUrl', params)
.success(function(data) {
   // stuff
})
.error(function(data) {
   // error stuff
});

这是正确的方法吗?

4 个答案:

答案 0 :(得分:13)

$http的第二个参数是 config 对象( see documentation )。在其他属性中, config 对象接受params属性:

  • params - {Object.<string|Object>} - 将使用paramSerializer序列化并附加为GET参数的字符串或对象的映射。

因此你必须传递参数

var config = {
    params: {
        one: value,
        two: value
    }
}

$http.get('/someUrl', config).then(...)

假设参数的值分别为&#39; 1&#39;和&#39; 2&#39;,$http会向以下网址发送GET请求:

/someUrl?one=1&two=2

作为旁注,请尽量避免在success上使用error$http函数。从角度1.4.4开始,它们已被弃用。使用方法then代替成功和错误回调,或者只使用成功回调和catch

答案 1 :(得分:3)

服务/工厂

对于实际呼叫,请使用可以注入所需控制器的工厂或服务。这是一个传递参数的示例工厂

.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;
    })
})

答案 2 :(得分:2)

我最近遇到了类似的问题,我不得不添加一些额外的细节来请求(我使用了一些标题的接受答案):

$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
});

答案 3 :(得分:1)

$ http documentation表明$ http.get方法的第二个参数是一个可以传递“param”对象的对象。

尝试这样的事情:

$http.get('/someUrl', {params: params})
.success(function(data) {
   // stuff
})
.error(function(data) {
   // error stuff
});