我有一个简单的投票机制我试图阻止。我之前得到了一些帮助,它可以自行运行,但我正在尝试使用ajax回调 - 我得到了返回的数据,但函数因为某些原因没有触发(虽然它可以用一个简单的警报作为回调功能)但它没有递增数字。 这是简化的HTML
<form name="vote" id="vote" method="post" action="PHP/success.php">
<a class="vote">Good</a><input class="qty" type="text" name="qty" value="0" readonly="readonly" />
<a class="vote">Bad</a><input class="qty" type="text" name="qty" value="0" readonly="readonly" />
</form>
这是虚拟PHP(PHP / success.php),此时只执行回显
<?php
echo('ok');
?>
和我的点击功能
$(".vote").click(function() {
$.ajax({
type: "POST",
url: "PHP/success.php",
success: function(data) {
if (data=="ok") {
var input = $(this).next(".qty");
input.val(parseFloat(input.val()) + 1);
} else {
alert('error');
}
}
});
});
再次,如果我用一个警报替换(data =“ok”)var和函数它工作正常。 THX
答案 0 :(得分:4)
我认为问题出在这条线上。
var input = $(this).next(".qty");
$(this)没有给出点击的元素。
如果你用
替换它var input = $(".vote").next(".qty");
该功能有效。
修改强>
我试过这个并且有效。
$(".vote").click(function() {
var kk = $(this);
$.ajax({
type: "POST",
url: "a.php",
success: function(data) {
if (data=="ok") {
var input = kk.next(".qty");
input.val(parseFloat(input.val()) + 1);
} else {
alert('error');
}
}
});
});
答案 1 :(得分:2)
将var input = $(this).next(".qty");
放在外面。
$(".vote").click(function() {
var input = $(this).next(".qty");
$.ajax({
type: "POST",
url: "PHP/success.php",
success: function(data) {
if (data=="ok") {
input.val(parseFloat(input.val()) + 1);
} else {
alert('error');
}
}
});
});