1

我在这样生成的网页上有一个部分。

<table>
    <c:forEach items="${personList}" var="person">
        <tr>
            <td>
            </td>
            <td>
                <h2 style="text-align:left;">${person.reviewName}</h2>              
                <h2 style="text-align:right;">by ${person.name}</h2>
            </td>
        </tr>
        <tr>
            <td style="text-align:right;">
                <img src="<c:url value="/resources/${person.id}.jpg" />" >
            </td>
            <td>
                ${person.review}
            </td>
        </tr>
        <tr>
            <td>
            </td>
            <td>
                <div id="${person.id}" class="comment">comments</div>
            </td>
        </tr>
        <tr id="ins${person.id}">
            <td>

            </td>
            <td id="comments${person.id}" style="display:none">
            <div id="ins${person.id}">
                <table>
                        <c:forEach items="${person.comments}" var="comment">
                            <tr>
                                <td>
                                    ${comment} 
                                </td>
                            </tr>
                        </c:forEach>
                </table>
                Add Comment:
                <textarea id="comment${person.id}"></textarea>
                <button onClick="addComment(${person.id})">add Comment</button>
            </div>
            </td>
        </tr>
    </c:forEach>
</table>

当像这样添加新评论时,我正在尝试使用 JQuery.load() 立即更新评论部分。

function addComment(id) {
    $.getJSON("addComment", {id:id, comment:$("#comment" + id).val()});
    $("#comments2").load("home #ins2");
}

问题是当我单击添加评论时,它只显示我之前添加的评论,这意味着评论部分总是后面的评论。如果我在添加评论后直接加载页面,它会按原样显示。另一个奇怪的事情是,当我添加评论时,会在评论的顶部插入一个空白行,当我直接加载页面时它不存在/消失。

我认为这可能是某种缓存问题,因此尝试使用将其关闭

$.ajaxSetup ({
    cache: false
});

然而这并没有什么不同。

我真的在这个死胡同。这与我使用 load() 作为 forEach 标签的部分有关吗?

4

1 回答 1

5

您需要在方法的success回调中加载您的评论getJSON以等待getJSON调用结束,然后再重新加载您的div.

function addComment(id) {
    $.getJSON("addComment", {id:id, comment:$("#comment" + id).val()}, function(){
        $("#comments2").load("home #ins2");
    });
}
于 2013-01-03T12:55:32.580 回答