<div class="btn-votes">
<div class="like">
<i class="icon-like">
<input type="button" title="Up" class="up" onClick="addVote('.$row['image_id'].',\'1\')" '.$up.' />
</i>
</div>
<div class="dislike">
<i class="icon-dislike">
<input type="button" title="Down" class="down" onClick="addVote('.$row['image_id'].',\'-1\')" '.$down.' />
</i>
</div>
</div>
这是AJAX的一部分。
function addVote(image_id,vote_rank) {
$.ajax({
url: "add_vote.php",
data:'image_id='+image_id+'&vote_rank='+vote_rank,
type: "POST",
beforeSend: function(){
$('#links-'+image_id+' .btn-votes').html("<img src='img/loaderIcon.gif' />");
},
success: function(vote_rank_status){
var votes = parseInt($('#votes-'+image_id).val());
var vote_rank_status;
switch(vote_rank) {
case "1":
votes = votes+1;
break;
case "-1":
votes = votes-1;
break;
}
console.log(vote_rank_status);
$('#votes-'+image_id).val(votes);
$('#vote_rank_status-'+image_id).val(vote_rank_status);
var up,down;
if(vote_rank_status == 1) {
up="disabled";
down="enabled";
}
if(vote_rank_status == -1) {
up="enabled";
down="disabled";
}
var vote_button_html = '<input type="button" title="Up" id="up" onClick="addVote('+image_id+',\'1\')" '+up+' /><div class="label-votes">'+votes+'</div><input type="button" title="Down" id="down" onClick="addVote('+image_id+',\'-1\')" '+down+' />';
$('#links-'+image_id+' .btn-votes').html(vote_button_html);
}
});
}
我不确定问题出在哪里但在网络控制台中我看到了错误
ReferenceError:未定义addVote
我认为这意味着无法将onClick
事件传递给AJAX函数。那些按钮应该怎么做?
这是当前正常运行的HTML
<div class="btn-votes">
<input type="button" title="Up" class="up" onClick="addVote('.$row['image_id'].',\'1\')" '.$up.' />
<input type="button" title="Down" class="down" onClick="addVote('.$row['image_id'].',\'-1\')" '.$down.' />
</div>
更新:当前代码
<div class="btn-votes">
<div class="like">
<button title="Up" class="up" onClick="addVote('.$row['image_id'].',\'1\')" '.$up.' />
<i class="icon-like"> </i>
</button>
</div>
<div class="dislike">
<button title="Down" class="down" onClick="addVote('.$row['image_id'].',\'-1\')" '.$down.' />
<i class="icon-dislike"></i>
</button>
</div>
</div>
答案 0 :(得分:0)
首先,addVote()函数不存在,所以将ajax调用包装在其中。
function addVote(image_id, vote_rank) {
$.ajax({
url: "add_vote.php",
data:'image_id='+image_id+'&vote_rank='+vote_rank,
type: "POST",
beforeSend: function(){
$('#links-'+image_id+' .btn-votes').html("<img src='loaderIcon.gif' />");
},
success: function(vote_rank_status){
console.log(vote_rank_status);
var votes = parseInt($('#votes-'+image_id).val());
var vote_rank_status;
switch(vote_rank) {
case "1":
votes = votes+1;
break;
case "-1":
votes = votes-1;
break;
}
$('#votes-'+image_id).val(votes);
$('#vote_rank_status-'+image_id).val(vote_rank_status);
var up,down;
if(vote_rank_status == 1) {
up="disabled";
down="enabled";
}
if(vote_rank_status == -1) {
up="enabled";
down="disabled";
}
var vote_button_html = '<div class="like"><i class="icon-like"><input type="button" title="Up" id="up" onClick="addVote('+image_id+',\'1\')" '+up+' /></i></div><div class="label-votes">'+votes+'</div><div class="dislike"><i class="icon-dislike"><input type="button" title="Down" id="down" onClick="addVote('+image_id+',\'-1\')" '+down+' /></i></div>';
$('#links-'+image_id+' .btn-votes ').html(vote_button_html);
}
});
}
然后,请勿使用<input type="button" />
,而是<button></button>
,并将图标放在里面。
<button class="btn" onClick="addVote(id, rank)">
<i class="fa fa-send"></i>
</button>
如果你已经在使用jquery,你可能想放弃onclick并执行以下操作:
$('body').on('click', '.up, .down', function(e){
e.preventDefault();
addVote($(this).attr('data-id'), $(this).attr('data-rank'));
return false;
});
当然,在data
属性中回显php。
答案 1 :(得分:0)
您可以在按钮上绑定onclick事件,但是,您应该通过jquery而不是onclick绑定该函数,因为onclick将在您的函数范围之外触发:
var vote_button_html = '<div class="like">' +
'<i class="icon-like">' +
'<input type="button" title="Up" id="up" '+up+' />' +
'</i>' +
'</div>' +
'<div class="label-votes">'+votes+'</div>' +
'<div class="dislike">' +
'<i class="icon-dislike">' +
'<input type="button" title="Down" id="down" '+down+' />' +
'</i>' +
'</div>';
var vote_button = $(vote_button_html);
vote_button.find("#up").on("click", function(){
addVote(image_id,1);
});
vote_button.find("#down").on("click", function(){
addVote(image_id,-1);
});
$('#links-'+image_id+' .btn-votes ').empty().append(vote_button);
请注意,如果您的网页上有多个投票按钮,则必须将ID从ID更改为类,因为ID 必须独一无二strong>