AngularJS:如何使用 $http.post 将多个参数传递给服务器类



我是AngularJS和Web服务的新手。我正在做一个程序,它从用户>[名称和年龄]获取值并将这些值插入oracle数据库。我只能插入一个值。我搜索使用 $http.post 传递多个值的结果并不好。如果有人能帮忙,那将是非常有帮助的。这是代码

客户端代码

<html>
<title>My AngularJS App</title>  
<body ng-app="myApp" ng-controller="DBCtrl">
<script type ="text/javascript" src="https://ajax.googleapis.co/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<form ng-submit="insertData()">
Student name: <input type = "text" ng-model="name" >
Student age: <input type= "text" ng-model="age">
<br>
<input type ="submit" value="INSERT">
</form>
<p>{{msg}}</p>
<script>
var app = angular.module('myApp',[]);
app.controller('DBCtrl', function($scope,$http){
$scope.insertData = function(){
    alert($scope.name);
    $http.post('rest/DB/add',$scope.name)
    //$http.get("rest/DB/extract")
    .success(function(){
        $scope.msg="DATA INSERTED";
    })
    }
    });

    </script>
    </body>
    </html>

服务器端 Java 代码

package com.ustri.DBman;
@Path("/DB")
public class DBManager {
@POST
@Path("/add")
@Produces(MediaType.TEXT_HTML)
public void addDetails(String sname,String sage){
    System.out.println("IN add");
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","hr","hr");          
        //step3 create the statement object  
        System.out.println("Connection established successfully");
        PreparedStatement stmt=con.prepareStatement("insert into studreg values(?,?)");  
        System.out.println(sname+"+"+sage);
        stmt.setString(1,sname);  
        stmt.setString(2,sage);
        int i=stmt.executeUpdate();  
        System.out.println(i+" records inserted");  
        con.close(); 
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  

    }
    }

使用此代码,我只能插入单个值 $scope.name。如何修改我的代码以将 $scope.name 和 $scope.age 参数通过 $http.post 传递到服务器?

使用此代码,我只能插入单个值 $scope.name。 如何修改我的代码以传递 $scope.name 和 $scope.age 参数通过 $http.post 到服务器?

默认情况下,$http post/get 方法将数据序列化为 JSON 并使用 "application/json" 内容类型发布请求来转换请求。
虽然您似乎想以"application/x-www-form-urlencoded"内容类型发布数据。

您可以指定"application/x-www-form-urlencoded"内容类型,并在发送数据之前使用正确的格式创建数据(在传输值之间添加&分隔符(。

或者你可以做更简单的事情。
您可以发送包含这两个信息的 JS 对象。

取代

$http.post('rest/DB/add',$scope.name);

var postedObj = {'name':$scope.name, 'age':$scope.age}
$http.post('rest/DB/add',postedObj);

并根据需要更改您的 REST 控制器。

取代

public void addDetails(String sname,String sage){

public void addDetails(Details details){

其中Details将两个传输的值作为字段。

public class Details{
  private String name;
  private String age;
  // and add getters and setters if required by your JSON/Java mapper.
}

相关内容

  • 没有找到相关文章

最新更新