如何在ajax成功函数中从java获取单个值响应

时间:2015-11-16 12:38:33

标签: java ajax rest

我有ajax这样的电话:

var x = document.forms["myForm"]["param1"].value;
var y = document.forms["myForm"]["param2"].value;
$.ajax({
        url: "./webapi/user/get?param1="+x+'&param2='+y,
        contentType: 'application/json',
        type: "GET",
        data:{get_param:'value'},
        success:function(data)
        {
            alert(data);
        }
        error:function(x,y,z){
            alert(x+" "+y+" "+z);
        }
    });

我在java UserService中的class功能是这样写的:

public int getFlag(String p_param1,String p_param2) {
    int flag=0;
    try{
        dcc.connectionCall();
        stmt=dcc.con.prepareCall("{? = call function1(?,?)}");
        stmt.registerOutParameter(1,OracleTypes.INTEGER);
        stmt.setString(2, p_param1);
        stmt.setString(3, p_param2);
        stmt.execute();
        flag = stmt.getInt(1);
        System.out.println("FLAG = "+flag+" "+p_param1+" "+p_param2);
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    return flag;
}

我的UserResource class具有以下功能:

userService userservice = new UserService();
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public int getUser(@QueryParam("param1") String p_param1,@QueryParam("param2") String p_param2) throws SQLException{
    int flag = userservice.getUserFlag(p_param1,p_param2);
    System.out.println("FLAG= "+flag+" "+p_param1+" "+p_param2);
    return flag;
}

上面的东西在eclipse控制台上提供了正确的输出。但是我无法在ajax call中收到回复,这只是标志。我怎么得到它?我搜索了很多但是一切都像将对象作为响应并在那里得到它stringified。但是我不需要整个json。我只需要旗帜。任何帮助都非常感谢。我使用Tomcat作为服务器,上述作业适用于ConnectionPoolingRESTful网络服务。

1 个答案:

答案 0 :(得分:0)

使用$.parseJSON(data)并获得您想要的内容。或者您必须将返回类型更改为明文(在服务器端),这似乎不可行。

@Altinak是对的,指的是jquery.ajax文档:

  

对$ .ajax()调用的不同类型的响应受到影响   在传递成功之前进行不同类型的预处理   处理程序。预处理的类型默认取决于   内容 - 响应的类型,但可以使用显式设置   dataType选项。如果提供了dataType选项,则为Content-Type   回复的标题将被忽略。