我正在尝试用我使用ajax请求获取的所有记录覆盖当前显示的记录。
我在控制器中最初做的是:
private ModelAndView fetchRecords(Model model) {
model.addAttribute("records", getSelectedRecords());
return new ModelAndView("list", "command", model);
}
并在jsp中显示记录为:
<c:forEach var="rec" items="${records}">
${rec}
</c:forEach>
工作正常。
现在我在控制器中映射这样的ajax请求:
@RequestMapping(value = "/list")
public @ResponseBody Object getServiceRequestSummaryPage(Model model, HttpSession session) {
return records= getAllRecords();
}
它将记录返回到下面的Jquery方法并显示在alert
中function loadallRecords(pn){
$.get("list.html", { pageNumber: pn }, function(records) {
alert(records);
});
}
<html>
<body>
<a href="" onClick="loadallRecords(${pn})" >Load all records</a>
</body>
</html>
现在,我不知道如何用jsp中的所有记录覆盖所选记录。
我想用所有记录覆盖下面的jsp:
<c:forEach var="rec" items="${records}">
${rec}
</c:forEach>
请帮忙。
答案 0 :(得分:3)
在概念上,您将使用jQuery查找包含先前记录的容器div(可能使用id值),您将在其上调用.empty()
以清除以前的记录,然后您将{{ 1}}你的替换记录。
由于您没有向我们展示记录的HTML,我们不能非常具体地建议,但假设原始页面看起来像这样:
.append()
然后,如果loadallRecords获得了JSON记录数组,那么替换函数可能如下所示:
<div id="container">
<c:forEach var="rec" items="${records}">
${rec}
</c:forEach>
</div>
如果loadallRecords获取代表新结果的HTML字符串,那么它将如下工作:
function loadallRecords(pn){
$.get("list.html", { pageNumber: pn }, function(records) {
$container = $("#container");
$container.empty();
$.each(records, function(index, value) {
$container.append(value);
})
});
}