而从发布角JS形式的数据错误(Error while posting data from angul

2019-08-01 08:16发布

我有一个angularJS形式数据发布到了Scalatra的servlet。 当表单被提交我不能让我的Scalatra的servlet的任何形式的PARAMS。

下面是我的代码

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键未找到

请让我知道,如果荫缺少的东西或任何其它的方式来做到这一点

Answer 1:

两个变化:

  1. 使用“NG-提交”事件。
  2. 把NG的模型对象里面自己,所以你可以只发送对象在后。

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);
  }
}


Answer 2:

我只是解决了这个由HTTP POST本身下方添加标题信息的代码

$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'}
})

}

如果任何人有任何其他更好的方法请发表你的建议。



Answer 3:

嗯,我也有过类似的问题,数据被发送到服务器的正确,但与正常$ _ POST或$ _REQUEST POST数据不能接受

然而,在为我工作

$data = json_decode(file_get_contents("php://input"));


Answer 4:

这将是晚来回答。 无论如何,我相信这将帮助别人,因此,我张贴我的答案。

如果您想在提交请求,以读取请求的身体POST ,您可以用得到它readerHttpRequest如下。

      BufferedReader reader = request.getReader();
      String line = null;
      while ((line = reader.readLine()) != null)
      {
        sb.append(line);
      }

 String requestBody = sb.toString();

希望这将有所帮助。



文章来源: Error while posting data from angular js form