Javascript Codeigniter ajax调用无法正常工作
例如,如果我单击“向上投票”按钮,它将成功地为第一篇文章添加投票,并使用class=“rate\u vots”在span元素中显示结果,但由于以下行,它也会在具有相同类的所有span元素中显示相同的结果: $(“.rate_voces”).text(rate);// 我怎样才能避免呢? 如果我使用 $(此).text(费率);// 它将无法正常工作,因为它不知道要选择哪个跨度图元。你能帮帮我吗 以下是我的看法:Javascript Codeigniter ajax调用无法正常工作,javascript,jquery,ajax,codeigniter,Javascript,Jquery,Ajax,Codeigniter,例如,如果我单击“向上投票”按钮,它将成功地为第一篇文章添加投票,并使用class=“rate\u vots”在span元素中显示结果,但由于以下行,它也会在具有相同类的所有span元素中显示相同的结果: $(“.rate_voces”).text(rate);// 我怎样才能避免呢? 如果我使用 $(此).text(费率);// 它将无法正常工作,因为它不知道要选择哪个跨度图元。你能帮帮我吗 以下是我的看法: <div> <?php
<div>
<?php
foreach($results as $row){
$id = $row['id'];
$rate = $row['rate'];
?>
<div>
<?php
$data = array(
'name' => $id,
'class' => 'rate',
'content' => 'Vote Up'
);
echo form_button($data);
?>
<span class="rate_votes" >
<?php echo $rate; ?>
</span>
</div>
</div>
这与codeigniter无关:) 您将单击事件绑定到一个ID,
#rate
,但该ID会出现多次
$data=array(
'name'=>$id,
'id'=>'rate',
“内容”=>“投赞成票”
);
回显表单按钮($data)代码>
改为使用类
选择多次出现的ID时,只会选择第一个ID,因此只有第一个按钮起作用
编辑
您的评论听起来有点奇怪,例如以下代码:
HTML:
<div class="foo">Foo</div>
<div class="foo">Foo</div>
<div class="foo">Foo</div>
<div class="foo">Foo</div>
上面的代码只删除被单击的特定div,即事件只触发一次,并且仅针对该元素
仔细检查您的javascript。这与codeigniter无关:)
您将单击事件绑定到一个ID,#rate
,但该ID会出现多次
$data=array(
'name'=>$id,
'id'=>'rate',
“内容”=>“投赞成票”
);
回显表单按钮($data)代码>
改为使用类
选择多次出现的ID时,只会选择第一个ID,因此只有第一个按钮起作用
编辑
您的评论听起来有点奇怪,例如以下代码:
HTML:
<div class="foo">Foo</div>
<div class="foo">Foo</div>
<div class="foo">Foo</div>
<div class="foo">Foo</div>
上面的代码只删除被单击的特定div,即事件只触发一次,并且仅针对该元素
仔细检查您的javascript。您使用过:
$("#rate").click(function(){...})
这里的“#rate”
是一个id
,id
必须是唯一的,使用class
类似.rate
。如果页面上有多个元素具有相同的id
,则只计算页面的第一个元素。因此,以下代码仅在id为rate
的第一个元素上注册单击处理程序:
$("#rate").click(function(){
//...
});
为元素指定一个类,例如:
<button class='rate'>Rate</button>
<button class='rate'>Rate</button>
您使用了:
$("#rate").click(function(){...})
这里的“#rate”
是一个id
,id
必须是唯一的,使用class
类似.rate
。如果页面上有多个元素具有相同的id
,则只计算页面的第一个元素。因此,以下代码仅在id为rate
的第一个元素上注册单击处理程序:
$("#rate").click(function(){
//...
});
为元素指定一个类,例如:
<button class='rate'>Rate</button>
<button class='rate'>Rate</button>
你核实了吗?尝试firebug来监视ajax调用。您验证了这一点吗?尝试firebug监视ajax调用编辑我的答案,特别是尝试更改$('#rate').attr(“disabled”,true)
到$(this).attr(“禁用”,true)
Patrick,我将id更改为class,但以下行有问题:$(“.rate_voces”).text(rate)$(“.rate”).text(“投票!”);我在你发布的代码中没有看到该ID,请阅读发布的另一个答案。你可以在我的视图中看到,我有一个span元素,用于显示投票。单击“投票”按钮后,span元素的文本会因以下行而更改:$(“.rate\u vots”).text(rate);如果我对span元素使用类,它会在具有相同类的每个帖子上显示第一篇帖子的结果。那我怎么才能避免呢?$('.rate').text(“投票!”)
同样,您希望使用this
而不是选择器,但是由于该行代码位于POST
请求中,this
与上下文无关。尝试在开始时添加另一个变量,类似于var self=this
,然后您可以使用正确的上下文在整个函数中引用self
。编辑我的答案,特别是尝试更改$(“#rate”).attr(“已禁用”,true)
到$(this).attr(“禁用”,true)
Patrick,我将id更改为class,但以下行有问题:$(“.rate_voces”).text(rate)$(“.rate”).text(“投票!”);我在你发布的代码中没有看到该ID,请阅读发布的另一个答案。你可以在我的视图中看到,我有一个span元素,用于显示投票。单击“投票”按钮后,span元素的文本会因以下行而更改:$(“.rate\u vots”).text(rate);如果我对span元素使用类,它会在具有相同类的每个帖子上显示第一篇帖子的结果。那我怎么才能避免呢?$('.rate').text(“投票!”)
同样,您希望使用this
而不是选择器,但是由于该行代码位于POST
请求中,this
与上下文无关。尝试在开始时添加另一个变量,类似于var self=this
,然后您可以使用正确的上下文
在整个函数中引用self
。