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

时间:2011-12-21 13:43:49

标签: jquery ajax spring spring-mvc

我正在尝试用我使用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>

请帮忙。

1 个答案:

答案 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);
        })
    });
}