我从select元素发送此参数(year),我正在使用$ http服务,以便根据参数列出对象数组,但由于某种原因,它会不行。
我有 404(未找到)错误,因为参数没有 出现在网址中以便发出请求。
选择元素:
<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 和功能 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 :(得分:1)
根据你的评论,这样做(一个简单的字符串连接):
$http.get('/pro/users/listbyyear/' + year);
将产生:
'/pro/users/listbyyear/2014'
答案 1 :(得分:0)
我在文档中阅读params
并附上了&#39;
所以这样它应该会更好:
var config = {
params: parameter
};
EDIT2:
你应该使用标准&#39;然后&#39;方法而不是成功&#39;和&#39;错误&#39;方法因为这些方法的贬值:
$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