当前位置: 首页 > 知识库问答 >
问题:

Dropwizard/Jackson从函数返回HTTP代码200,但AJAX POST出错

史磊
2023-03-14

我是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;

}

然后在前端,我只需将用户名和密码发布到url:

    $(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个答案

钦楚青
2023-03-14

下面的答案在启用cors在dropwizard不工作似乎解决了我的问题。这是CORS的一个问题。

 类似资料:
  • 我使用spring-boot(v2 M3)和Spring-WebFlux进行一个项目。在编写一个特性时,我看到我的微服务返回一个HTTP200状态代码,同时在流量中返回一个错误。 使用一个简单的异常处理程序: 我在集成测试中用webTestClient测试结果: 结果,我的测试失败了,因为返回错误通量的控制器返回的是200状态码,而不是503状态码(异常日志“test”在我的控制台中被很好地跟踪)

  • 我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?

  • 调用此获取操作时: 会引发一个异常...我的全局exc处理程序被触发。 当我的自定义响应返回给客户端时,我的小提琴手总是说: 结果:200 我还可以更改<code>返回Ok(数据)to

  • 问题内容: 我看到了一些类似的问题(像这样),但是没有一个问题专门解决这个问题。 因此,Google 现在支持SPA,并且大多数网络浏览器都支持HTML5 pushState 。 我的AngularJS(但可能是任何JS东西)网站都使用URL来确定API路由。然后执行API调用,然后相应地呈现内容。 但是,由于 每个URL都 返回HTTP 200状态代码(包括example.com/get-fre

  • 我想做一个网站的登录页面。我有一个函数,它使用AJAX向PHP脚本发送请求,以检查是否输入了正确的用户名和密码。如果查询返回成功的结果,则发送http_response_code(200),否则发送http_response_code(403)。然而,登录功能似乎没有返回任何响应状态。反应似乎是不确定的。在这种情况下,即使输入了正确的密码和用户名,该函数也会给我错误密码或用户名的窗口警报。我应该检

  • 所以我最近为java开发人员安装了eclipse。这一个安装后,我尝试启动eclipse,但它只是这样说 任何人都知道如何修复我安装了JDK14.0.4,我安装了最新的java,因为它说没有更新。 我自己试着对它做一些研究,有人说,以确保您的java版本与eclipse版本相同,当我测试时,我认为我有32位的java,但我有一台64位的计算机,我安装了64位的eclipse。我重新安装了java,