这是我的角度js代码,我希望以Json格式将数据发送到用java编写的restful web服务。它打电话给网络服务,但我没有得到任何数据。
<script>
var app = angular.module("myPost", []);
app.controller("myControl", function ($scope, $http) {
$scope.title = "",
$scope.rating = "",
$scope.feedback = "",
$scope.role = "";
$scope.send = function (title, rating, feedback, role) {
var feed = {
title: title,
rating: rating,
feedback: feedback,
role: role
};
var head = {'Content-Type': 'application/json'};
$http({
method: 'POST',
url: 'myurl',
data: feed,
headers: head
}).success(function (data, status, headers, config) {
$scope.users = data;
}).error(function (data, status, headers, config) {
$scope.error = status;
});
};
});
</script>
</head>
<body ng-app="myPost" ng-controller="myControl">
<form action="">
Title: <input type="text" name="title" value="" ng-model="title" />{{title}}<br>
Rating:<br> <select name="rating" ng-model="rating">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select><br>
Feedback: <input type="text" name="feedback" value="" ng-model="feedback"/><br>
<input type="hidden" name="type" value="article" ng-model="role" />
<input type="submit" ng-click="send(title, rating, feedback, role)" value="submit" />
这是我想要数据的宁静Web服务。
@Path("/database")
public class database {
@Path("/insert")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String insert(@QueryParam("title") String title,
@QueryParam("rating") int rating,
@QueryParam("feedback") String feedback,
@QueryParam("role") String role) {
Data d = new Data();
d.setTitle(title);
d.setRating(rating);
String response = new Gson.toJson(d);
}
回复; }
答案 0 :(得分:2)
您不应使用@QueryParam
,因为您不使用GET
方法,而是使用POST
方法。
对于POST
,您不会使用网址传输查询参数,但会传输请求正文中包含的数据。
因此,从其他控制器端,如果它包含与发送的参数名称和值匹配的字段和字段类型,则可以检索可用作Data
类参数的信息。
@Path("/insert")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String insert(Data data) {
...
}
答案 1 :(得分:0)
你应该这样做:
$scope.users = data;
而不是:
$scope.users = status;
状态仅是请求的响应代码。希望这有帮助)