【问题标题】:Error while posting data from angular js form从 Angular js 表单发布数据时出错
【发布时间】:2012-10-10 19:07:39
【问题描述】:

我有一个将数据发布到 scalatra servlet 的 angularJS 表单。提交表单后,我无法在我的 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 获得)

如果我遗漏了什么或任何其他方式,请告诉我

【问题讨论】:

    标签: javascript scala angularjs scalatra


    【解决方案1】:

    两个变化:

    1. 使用“ng-submit”事件。
    2. 将 ng-models 放入对象本身,这样您就可以在帖子中发送对象。

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

    【讨论】:

    • 感谢您的回复我有一个问题,我的服务器端代码应该接受 JSON 格式的发布请求
    【解决方案2】:

    我刚刚通过在 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'}
    })
    

    }

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

    【讨论】:

      【解决方案3】:

      好吧,我也遇到了类似的问题,数据被正确发布到服务器,但无法在正常 $_POST 或 $_REQUEST 的 POST 数据中接收

      但是,以下对我有用

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

      【讨论】:

        【解决方案4】:

        这将是迟到的答复。无论如何,我认为这会对其他人有所帮助,因此,我发布了我的答案。

        如果您想在以POST 提交请求时读取请求正文,您可以使用HttpRequestreader 获取它,如下所示。

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

        希望这会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多