【问题标题】:How to retrieve data from MySQL database and place in a HTML Form using Rest Web Services using Java, AJAX如何使用 Java、AJAX 使用 Rest Web 服务从 MySQL 数据库中检索数据并放置在 HTML 表单中
【发布时间】:2018-09-05 01:37:40
【问题描述】:

我正在尝试从 MySQL 数据库中检索用户数据并将它们放在 HTML 表单中。我正在使用 AJAX 在 Java 中调用 Web 服务。但它不起作用。它没有给出任何错误。但不会出现数据。当我尝试使用 POSTMAN 时,它工作正常,细节出现在 JSON 中。但是使用 AJAX 它不起作用。有谁能够帮我?提前致谢。 Users.java 包含 Getter 和 Setter。

Details.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.java 中的代码

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;
}

【问题讨论】:

  • 您是否检查过来自浏览器的 AJAX 请求是否确实到达了服务器?浏览器可能缓存了请求。您最好在客户端的 Java Script 代码和服务器上的 Java 代码中都设置断点

标签: java mysql json ajax jax-rs


【解决方案1】:

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

改变这个

searchDetails = data;

进入这个

searchDetails = data[0];

【讨论】:

    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多