我设法用单一的当前得分制作简单的投票系统。一切都很好,但问题是当我点击一个按钮为这个特定的内容投票时 - 其他div中的所有分数也会改变!我需要AJAX才能在当前div(视频投票)上输出成功的答案而不是我页面上的所有内容!我认为是因为:
success: function(html) {
$('.this').html(html);
}
那是因为我的页面上有一系列的块:
<div id="main">
<div class="box1">
<a href="" class="vote" id="<?php echo $mes_id; ?>" name="up">
<img class='image'src="img/thumbsup.png">
</a>
<span class='this'><?php echo $total_score; ?></span>
<a href="" class="vote" id="<?php echo $mes_id; ?>" name="down">
<img class='image' src="img/icon-down.png">
</a>
</div>
<div class='box2' ><?php echo $msg; ?></div>
</div>
跨越课程&#39;这个&#39;,当成功时,AJAX会对所有人做出响应,但我需要识别它们并仅对当前的响应添加响应(跨越课程&#39;这个&# 39;,这基本上是当前投票的分数),这样当用户投票时 - 只有当前分数变化。不是所有的人! (如果他们所有人都有班级&#39;这就是我从AJAX传递响应。为每个块(div)创建一个特定的类是无稽之谈,因为我创建了一个显示来自数据库的视频的页面 - 任何数! 这里是ajax和jquery:
<script type="text/javascript">
$(function() {
$(".vote").click(function()
{
var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var acdc = $('#ab').attr('class');
var potato = 'potato';
var parent = $(this);
if(name=='up')
{
$.ajax({
type: "POST",
url: "up_vote.php",
data: dataString,
cache: false,
success: function(html){
$('.this').html(html);
}});
}
else
{
$(this).fadeIn(200).html('<img src="img/icon-down.png" align="absmiddle" style="height: 10px;width:10px;">');
$.ajax({
type: "POST",
url: "down_vote.php",
data: dataString,
cache: false,
success: function(html){
$('.this').html(html);
}});
}
return false;
});
});
</script>
那么,我该如何做到?(仅改变当前得分)非常感谢!提前。
答案 0 :(得分:1)
你不能在成功函数中使用$(this),因为它会随着调用$(this)的上下文而改变,你必须将它存储在var中,然后在你的ajax成功中使用它如下所示:
<script type="text/javascript">
$(function () {
$(".vote").click(function ()
{
var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id=' + id;
var acdc = $('#ab').attr('class');
var potato = 'potato';
var parent = $(this);
if (name == 'up')
{
$.ajax({
type: "POST",
url: "up_vote.php",
data: dataString,
cache: false,
success: function (html) {
parent.parent().find('.this').html(html);
}});
}
else
{
$(this).fadeIn(200).html('<img src="img/icon-down.png" align="absmiddle" style="height: 10px;width:10px;">');
$.ajax({
type: "POST",
url: "down_vote.php",
data: dataString,
cache: false,
success: function (html) {
parent.parent().find('.this').html(html);
}});
}
return false;
});
});
</script>
答案 1 :(得分:0)
您尚未显示代码,但可能是在点击 o.s.r.i.StatefulRetryOperationsInterceptor - Executing proxied method in stateful retry public abstract void org.springframework.amqp.rabbitlistener.SimpleMessageListenerContainer$ContainerDelegate.invokeListener(Channel,Message) throws java.lang.Exception(55435ee)
元素时触发了AJAX请求。如果是这种情况,您可以存储引发事件的元素的引用,然后使用DOM遍历查找兄弟.vote
并更改它的HTML。像这样:
.this