我有一个angularJS表单,它将数据发布到scalatra servlet。表单提交后,我无法在我的scalatra servlet中获取任何形式的参数。
以下是我的代码
AngularJS
$scope.createUser = function() {
$http.post('/createUser',{name:$scope.name,email:$scope.email,pwd:$scope.pwd}).
success(function(data, status, headers, config) {
alert("success " + data)
}).
error(function(data, status, headers, config) {
alert("failure =>" +data)
});
}; });
};
HTML表单
<form ng-controller="UserController">
<legend>Create User</legend>
<label>Name</label>
<input type="text" id="name" name="name" ng-model="name" placeholder="User Name">
<label>Email</label>
<input type="text" id="email" name="email"
ng-model="email" placeholder="ur email here">
<label>Password</label>
<input type="text" id="pwd" name="pwd"
ng-model="pwd" placeholder="ur own pwd here">
<button ng-click="createUser()" class="btn btn-primary">Register</button>
</form>
Scalatra Servlet
post("/createUser") {
println(params("name"))
}
当我运行应用程序并尝试从表单提交时,我收到此错误
找不到错误500键:名称(从firebug lite获得)
如果我遗漏了某些内容或其他任何方式,请告诉我
答案 0 :(得分:4)
两个变化:
HTML:
<div ng-controller="UserController">
<form ng-submit="createUser()">
<input type="text" ng-model="user.name">
...
<input type="email" ng-model="user.email">
...
</form>
</div>
JS:
function UserController($scope, $http) {
$scope.user = {};
$scope.createUser = function() {
$http.post('/createUser', $scope.user);
}
}
答案 1 :(得分:3)
我刚刚通过在http帖子中添加标题信息来解决这个问题 下面是代码
$scope.createUser = function() {
$http({
method: 'POST',
url: '/createUser',
data: 'name=' + $scope.user.name + '&email=' +$scope.user.email,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
}
如果其他人有任何其他更好的方法,请发表您的建议。
答案 2 :(得分:0)
好吧我也有类似的问题,数据正确地发布到服务器但是在POST数据中无法接收正常的$ _POST或$ _REQUEST
然而,以下为我工作
$data = json_decode(file_get_contents("php://input"));
答案 3 :(得分:0)
这将很晚才回答。无论如何,我认为这将有助于其他人,因此,我发布我的答案。
如果您希望在POST
提交请求时阅读请求正文,则可以使用reader
HttpRequest
获取请求,如下所示。
BufferedReader reader = request.getReader();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line);
}
String requestBody = sb.toString();
希望这会有所帮助。