Я отправляю этот параметр (год) из элемента select, и я использую службу $ http для перечисления массива объектов на основе параметра, но по какой-то причине он не работает.
У меня есть ошибка 404 (не найдена), потому что параметр не отображается в URL-адресе, чтобы выполнить запрос.
Выберите элемент:
<select data-ng-model="year" data-ng-change="listByYear(year)">
<option value="">Select year</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select>
Контроллер appController и fuction listByYear():
moduleApp.controller("appController", function($scope, $http){
$scope.listByYear = function(year){
console.info("Parameter received: "+year)
var parameter = {
year: $scope.year
};
var config = {
param: parameter
};
$http.get("/pro/users/listByYear", config)
.success(function (data, status, headers, config) {
$scope.users = data;
console.info("Ok")
}).error(function (data, status, header, config) {
console.error("Error")
});
}
});
Основываясь на ваших комментариях, это сделает это (простая конкатенация строк):
$http.get('/pro/users/listbyyear/' + year);
будет производить:
'/pro/users/listbyyear/2014'
Из документа я читал params
с 's'.
Таким образом, он должен работать лучше:
var config = {
params: parameter
};
EDIT2:
Вы должны использовать стандартный метод "then" вместо метода "success" и "error" из-за обесценения этих методов:
$http.get("/pro/users/listByYear", config)
.then(function (response) {
console.log('data:', response.data);
console.log('status:', response.status);
console.log('headers:', response.headers);
}).catch(function (response) {
console.log('data:', response.data);
console.log('status:', response.status);
console.log('headers:', response.headers);
});
См. Https://docs.angularjs.org/api/ng/service/$http#deprecation-notice