Dropwizard / Jackson从函数返回HTTP代码200但AJAX POST获取错误

时间:2015-02-27 16:59:23

标签: java jquery ajax jackson dropwizard

我是Dropwizard的新手,从POJO到Json的转换有点麻烦。我在前端使用jQuery,我使用POST类型调用ajax函数。我正在尝试验证MySQL数据库中的数据登录。我知道数据库已连接,并且可以根据HTML登录页面上输入的凭据在数据库中找到正确的用户。

这是后端代码:

    @POST
@UnitOfWork
@Path("/login")
@Produces("application/json")


public User login(String credentials) {

    try {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode root = mapper.readValue(credentials, JsonNode.class);
        String  username = root.get("Username").toString().replaceAll("\"", "");
        String password = root.get("Password").toString().replaceAll("\"", "");

        User user = userDAO.findByUsername(username);

        //Check password matches and respond
        boolean passwordMatched = user.isPasswordMatched(password);

        //Return correct response
        if (passwordMatched) {
            return user;
        }
    }
    catch (Exception e) {
        System.out.println(e.getMessage());
    }

    return null;

}

然后在前端我只是将用户名和密码发布到网址:

    $(document).ready(function() {

    $("#login").click(function() {

        var username = $("#username").val();
        var password = $("#password").val();

        $.ajax({

            url:'http://localhost:8080/User/login',
            type: 'POST',
            data: JSON.stringify({"Username" : username, "Password" : password}),
            complete: function(data, status) {
                alert("Status: " + status + "Data: " + JSON.stringify(data));
            }

        });

服务器的控制台输出是HTTP代码200,当我在登录功能中设置断点时,我可以看到找到正确的数据库条目并从函数返回。但是,从jQuery代码完成时触发的警报会输出错误。

根据JsonLint,从我的服务器返回的数据是有效的JSon。所以看起来ajax没有收到奇怪的数据,因为它成功发送原始登录详细信息。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

Enabling cors in dropwizard not working的回答似乎解决了我的问题。这是CORS的一个问题。