点击时更改链接文本无法正常工作

时间:2014-05-14 05:40:16

标签: java javascript jquery html ajax

此处点击链接后,获取相应的 ID ,但将状态更改为所有帖子。不在选定的项目

此处 html 代码

<div th:each="p : ${posts}">
<div id="para">
<a style="float: right;" href="#" class="decision"
th:text="${p.approved}">Approve</a> 
<input type="hidden" class="pid"  th:value="*{p.id}" /> 
</div>
</div>

当我点击批准链接时,获取id值是正确的。但更改状态会影响所有其他帖子

这是脚本

 <script>
$(document).ready(function() {
$('.decision').click(function(e) {
$.ajax({

type : 'POST',
dataType : 'json',
url : '/RealEstate/ChangeStatus.html',
data : ({

pid :$(this).siblings('.pid').val()
}),
success : function(response) {
alert(response);
$('.decision').html(response);
/* $('.decision').text(response); */
},
error : function() {
alert('Error while request..');
}
});
});
});
</script>

控制器

@RequestMapping("/ChangeStatus.html")
@ResponseBody
public String approvDisapprove(@RequestParam("pid") String pid) {
Gson gson = new Gson();
String data = null;
Property property = propertyDAO.findById(Integer.parseInt(pid));
if (property.getApproved() == true) {
property.setApproved(false);
data = gson.toJson("False");
} else {
property.setApproved(true);
data = gson.toJson("True");
}
propertyDAO.update(property);
return data;
}

如果你知道这个问题,请分享回答

2 个答案:

答案 0 :(得分:4)

您需要使用this引用,如下所示:

<script>
$(document).ready(function() {
$('.decision').click(function(e) {
$.ajax({

type : 'POST',
dataType : 'json',
url : '/RealEstate/ChangeStatus.html',
data : ({

pid :$(this).siblings('.pid').val()
}),
success : function(response) {
alert(response);
$(this).html(response);
^------^ // here use this instead of .decision selector
/* $('.decision').text(response); */
},
error : function() {
alert('Error while request..');
}
});
});
});
</script>

答案 1 :(得分:2)

<script>
$(document).ready(function() {
    $('.decision').click(function(e) {
    $.ajax({
       type : 'POST',
       dataType : 'json',
       url : '/RealEstate/ChangeStatus.html',
       data : ({ pid :$(this).siblings('.pid').val() }),
    })
    .done(function(response) {
           alert(response);
           $(this).text(response);
       })
    .fail(function() {
          alert('Error while request..');
       });
    });
});
</script>