jQuery AJAX回调函数问题

时间:2011-11-02 03:56:37

标签: jquery ajax

我有一个简单的投票机制我试图阻止。我之前得到了一些帮助,它可以自行运行,但我正在尝试使用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

2 个答案:

答案 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');
            }
        }
    });
});