Hasitha Jayawardana
Hasitha Jayawardana

Reputation: 2436

How to retrieve data from MySQL database and place in a HTML Form using Rest Web Services using Java, AJAX

I am trying to retrieve user data from MySQL database and place them in an HTML form. I am using AJAX to call web services in Java. But it is not working. It doesn't give any error. But data won't appear. When I tried with POSTMAN it works fine and details appear in JSON. But using AJAX it's not working. Can anybody help me? Thanks in advance. Users.java contains Getters and Setters.

The code in 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>

Code in Service

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

The code in 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;
}

Upvotes: 1

Views: 1092

Answers (1)

H Athukorala
H Athukorala

Reputation: 853

Your REST service is returning an array, So all you have to do is,

Change this

searchDetails = data;

Into this

searchDetails = data[0];

Upvotes: 1

Related Questions