有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Java、AJAX和RESTWeb服务从MySQL数据库检索数据并将其放入HTML表单

我正在尝试从MySQL数据库中检索用户数据,并将它们放在HTML表单中。我正在使用AJAX调用Java中的web服务。但它不起作用。它没有给出任何错误。但数据不会出现。当我尝试使用POSTMAN时,它运行良好,详细信息以JSON显示。但是使用AJAX是行不通的。有人能帮我吗?提前谢谢Users.java包含getter和setter

代码的详细信息。jsp

<form>
Enter Username:<br>
<input type="text" id="usernameSe" name="username"><br>
<h3>Details Will Appear Here</h3><br>
Username:<br>
<input type="text" id="username" name="username"><br>
Email:<br>
<input type="text" id="email" name="email"><br><br>
Password:<br>
<input type="text" id="password" name="password"><br>

<button id="btnGet">Save</button>
</form>



<script type="text/javascript">
$(document).ready(function()
{
    $("#btnGet").click(function(event)
    {
        event.preventDefault();
        var searchDetails;

        $.ajax(
        {
            type: 'GET',
            url:  "http://localhost:8080/WebService/webresources/users/get/"+$('#usernameSe').val(),
            dataType: "json",
            success: function(data)
            {
                searchDetails = data;
                renderDetails(searchDetails);
            },
            error: function(jqXHR, textStatus, errorThrown) 
            {
                alert('Error: ' + textStatus);
            }
        });
    });
});

function renderDetails(user)
{
    $('#username').val(user.username);
    $('#email').val(user.email);
    $('#password').val(user.password);
};
</script>

服务代码

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("get/{username}")
public String getUsersByName(@PathParam("username")String username) throws ClassNotFoundException, SQLException
{
    Gson g = new Gson();
    UsersDAO dao = new UsersDAO();
    List<Users> users = dao.getUsersByName(username);

    return g.toJson(users);
}

UserDAO中的代码。爪哇

public List<Users> getUsersByName(String username) throws ClassNotFoundException, SQLException
{
    List<Users> user = new ArrayList<>();
    Users u = null;
    sql = "SELECT * FROM users WHERE username = ?";
    con = DbConnection.getConnection();
    pst = con.prepareStatement(sql);
    pst.setString(1, username);
    rs = pst.executeQuery();
    while(rs.next())
    {
        u = new Users();
        u.setUsername(rs.getString("username"));
        u.setEmail(rs.getString("email"));
        u.setPassword(rs.getString("password"));

        user.add(u);
    }
    DbConnection.db();
    return user;
}

共 (1) 个答案

  1. # 1 楼答案

    您的REST服务正在返回一个数组,所以您所要做的就是

    改变这个

    searchDetails = data;
    

    进入这个

    searchDetails = data[0];