Reputation: 2436
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
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