AngularJS - $ http список объектов сервиса по параметру

0

Я отправляю этот параметр (год) из элемента 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")  
        });
    } 
});
  • 0
    Какой URL вы хотите получить от вашего бэк-энда?
  • 0
    Просто "pro / users / listByYear / 2015" и сервер отправит все объекты, основанные на этом параметре, но когда я вижу журнал консоли в браузере, у меня появляется ошибка со следующим форматом "pro / users / listByYear /? Year = 2015 " 404 Не Найдено)
Теги:
angularjs-scope

2 ответа

1
Лучший ответ

Основываясь на ваших комментариях, это сделает это (простая конкатенация строк):

$http.get('/pro/users/listbyyear/' + year);

будет производить:

'/pro/users/listbyyear/2014'
0

Из документа я читал 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню