使用Ajax将var发送到查询

时间:2018-12-05 15:49:49

标签: javascript java angularjs ajax

我正在使用POST使用angularjs从点击事件中获取数据。我想我已经写了大多数代码,但是运行查询时出现“无效字符”错误。我认为当我从javascript抓取变量时,它可能与类型转换有关。

这是我的Java文件帖子

@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(int jobId) throws IOException{
    try (Dbc dbc = vehmPool.getDbc()){
        List<ModuleProcCount> pusher = statements.inMod(dbc, jobId);
        return pusher;
    } 
}

此功能或我的帖子

$scope.sendJobId = function(jobId) {    
        $http.post("rest/performance/module", jobId).then(function(response){
            $scope.pusher = response.data;

            for (var i = 0; i < $scope.pusher.length; i++) {
                var p = $scope.puller[i];
                console.log("modName: " + p.modName);
                console.log("modClass: " + p.cellClass);
                console.log("modData: " + p.modCount);
        }
    });

这是我的HTML代码,里面有角代码。

<table id="Table" class="JobID-table" style="text-align:center" >
    <tr class="table-Header">
        <th>JOB ID</th>
        <th>TIME FOR ALL MODULES(MILLISECONDS)</th> 
    </tr>
    <tr class="jobID-Table-tr" ng-repeat="p in puller | orderBy : '-modCount'"> 
        <td ng-click="sendJobId(p.modName)" class={{p.cellClass}}>
        {{p.modName}}   
        </td>
        <td class={{p.cellClass}}>
        {{p.modCount}}
        </td>
    </tr>
</table> 

1 个答案:

答案 0 :(得分:1)

您的Java方法设置为使用JSON(@Consumes(MediaType.APPLICATION_JSON))。这意味着JAX-RS尝试将POST请求的主体解析为JSON对象,然后将其映射到使用者函数的参数类型,在本例中为String

由于您实际上并未通过POST请求发送JSON对象,因此应告知JAX-RS您想从有效负载中接收原始文本:

@Consumes(MediaType.TEXT_PLAIN)

或者,您可以使用JSON!由于您提到的参数是整数,因此本示例使用一个JSON对象,该对象带有一个名为jobId的单个整数参数:

/**
 * This class is used by JAX-RS to parse to and from JSON. The field
 * names used here (and by extension the getters and setters) should
 * match those used in your JSON.
 */
class InputRequest {
    int jobId;

    public String getJobId() {
        return jobId;
    }

    public void setJobId(int jobId) {
        this.jobId = jobId;
    }
}

@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(InputRequest reqPayload) throws IOException {
    int jobId = reqPayload.getJobId();
}

在客户端,角度自动将为有效负载传递的对象转换为JSON字符串,并为您设置ref的标头({{3}})。

Content-type