用ajax获取的记录覆盖显示的数据



我试图用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 });
}

最新更新