我试图用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>
It's working fine.
现在我将ajax请求映射到controller:
@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>
请帮。
在概念上,你将使用jQuery找到保存你以前记录的容器div(可能使用id值),你将调用.empty()
来清除以前的记录,然后你将.append()
你的替换记录。
由于您没有向我们展示任何记录的HTML,我们不能非常具体地建议,但假设,如果原始页面看起来像这样:
<div id="container">
<c:forEach var="rec" items="${records}">
${rec}
</c:forEach>
</div>
然后,如果loadallRecords正在获取记录的JSON数组,您的替换函数可能看起来像这样:
function loadallRecords(pn){
$.get("list.html", { pageNumber: pn }, function(records) {
$container = $("#container");
$container.empty();
$.each(records, function(index, value) {
$container.append(value);
})
});
}
如果loadallRecords得到一个代表新结果的HTML字符串,那么它将像这样工作:
function loadallRecords(pn){
$("#container").load("list.html", { pageNumber: pn });
}