无法在我的页面中显示我使用ajax从控制器获取的值?

时间:2018-01-07 11:20:53

标签: jquery ajax

这是我的JSP文件的一部分,我遇到了问题:

<div class="aimerSection">
     <div class="aime">
         <form>
             <input type="hidden" class="adore1" name="aime" value="${post.id}">
             <input type="button" class="adore2" value="J'aime">
         </form>
     </div>
     <c:if test="${ post.adore == 0 || post.adore == 1 }">
     <div class="nbreAimes"><p><span class="nbrAdore">${ post.adore }</span> personne aime ça</p></div>
     </c:if>

     <c:if test="${ post.adore != 0 && post.adore != 1 }">
     <div class="nbreAimes"><p><span class="nbrAdore">${ post.adore }</span> personnes aiment ça</p></div>
     </c:if>
</div>

这是我的jQuery文件:

$(document).ready(function(){
    $(".adore2").click(function(){
        var aime = $(this).parent().find(".adore1").val()
        var value = $(this).parent().parent().siblings().find(".nbrAdore").text()
        alert(value)

        $.ajax({
            type:"POST",
            data: {aime:aime},
            url:"acceuilServlet",
            success:function(result){
                alert(result)
                // this is the line where i am having a problem 
                $(this).parent().parent().siblings().find(".nbrAdore").html(result)     
            }
        })
    })
})

现在我想要实现的是当我用类&#34; adore2&#34;点击我的输入(按钮)时,喜欢的数量(与班级#34; nbrAdore&#34;的跨度)有在我的数据库中增加。

我使用警报来查看是否一切都很好,就像任何打手一样,我将通过一个例子来解释。

如果喜欢的数量是14,我的值(var值)很好,我得到它,我的警报显示14,我的警报(结果)显示15,这意味着我的控制器中的治疗已正确完成,但我在我看来,我不能看到这个,我相信我的问题就在这里,我不知道如何解决它:

$(this).parent().parent().siblings().find(".nbrAdore").html(result) 

2 个答案:

答案 0 :(得分:1)

这是因为streamsize是元素的集合。如果适用的话,很难说明应用哪个元素.siblings()

那么如何消除这种不确定性并尝试立即从.find()找到目标元素?

.aimerSection

<小时/> 的修改

好像您的$(this).closest(".aimerSection").find(".nbrAdore").html(result); 不是.nbrAdore的孩子。

在代码检查器中查找确实位于的位置。

答案 1 :(得分:0)

ajax调用中this的上下文正在发生变化。它更改为ajax调用的jqXHR。您可以先将$(this)保存到变量中,然后在回调中使用该变量:

var self = $(this);
$.ajax({
        type:"POST",
        data: {aime:aime},
        url:"acceuilServlet",
        success:function(result){
            alert(result)
            // this is the line where i am having a problem 
            self.parent().parent().siblings().find(".nbrAdore").html(result)     
        }
    })

但更好的方法是保存elem本身,因为你使用它两次:

var elem = $(this).parent().parent().siblings().find(".nbrAdore");
var value = elem.text();
....
success: function(result) {
    alert(result);
    elem.html(result);
}