在我使用ajax POST更新表中的特定用户后,我试图在模态关闭后重新加载我的用户表。我已经利用jQuery加载函数再次调用我的页面,以便页面刷新,但页面看起来好像是在重复自己。我在下面提供了我的代码。 我的Ajax POST功能成功更新并重新加载页面:
$.ajax({
type: "POST",
url: "${pageContext.request.contextPath}/updateUser",
data: $("#updateForm").serialize(),
success: function(response) {
$("#alert").show();
$("#users_table").load("${pageContext.request.contextPath}/users #users_table");
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Status: " + textStatus); alert("Error: " + errorThrown);
}
});
我试图在AJAX成功时重新加载的表:
<table id="users_table" class=" table table-hover table-bordered">
<tr>
<th>User Id #</th>
<th>Full Name</th>
<th>Username</th>
<th>Email</th>
<th>Date of Birth</th>
<th>User Authority</th>
<th>Update </th>
<th>Submitted Sightings</th>
<th>Delete</th>
</tr>
<c:forEach var="user" items="${users}">
<tr>
<td><c:out value="${user.id}" /></td>
<td><c:out value="${user.name}"/></td>
<td><c:out value="${user.username}"/></td>
<td><c:out value="${user.email}"/></td>
<td><c:out value="${user.dob}"/></td>
<td><c:out value="${user.authority}"/></td>
<td>
<button data-togle="modal" href="#updateModal" class="updateUser btn btn-primary" value="${user.id}">Update</button>
</td>
<td>
<button class="btn btn-success">Sightings</button>
</td>
<td>
<a class="delete" href="<c:url value="/deleteUser"><c:param name="id" value="${user.id}"/></c:url>"><button class="btn btn-danger">Delete</button></a>
</td>
</tr>
</c:forEach>
</table>
我的控制器从数据库中获取所有用户:
@Secured("ROLE_ADMIN")
@RequestMapping("/users")
public String getUsers(Model model) {
List<User> users = usersService.getUsers();
model.addAttribute("users", users);
return "users";
}
任何指导将不胜感激。感谢
答案 0 :(得分:1)
桌子周围需要一个容器:
<div id="users_table_container">
<table id="users_table">
...
</table>
</div>
然后你的AJAX回调应该:
$("#users_table_container").load(...);
这是因为.load()
替换了您应用它的元素的内容,它不会替换元素本身。所以你最终得到了一个表内的表,以及重复的ID。
答案 1 :(得分:0)
Jquery加载不适合与ModelView一起使用,但它返回期望页面重定向的新页面映射,模型将在响应后关闭,在您的情况下它等待释放模型!,对于ajax,您应该使用jquery ajax与ResponseBody并附加在jquery
答案 2 :(得分:0)