ajax POST无法正常工作,无法解释原因

时间:2010-10-30 21:27:33

标签: php javascript jquery ajax

我有一个简单的AJAX函数将对象的id发送到php页面

我的功能如下:

$(function(){      
    $("a.vote").click(function(){
        //get the id
        the_id = $(this).attr('id');
        alert(the_id);

        //ajax post
        $.ajax({
            type: "POST",
            data: "?id="+the_id,
            url: "vote.php",
            success: function(msg)
            {
                $("span#message"+the_id).html(msg);
            }
        });
    });
});

我的vote.php看起来像这样:

session_start();
if(isset($_SESSION['user'])) {
    // db setup removed

    // insert vote into db
    $q = "UPDATE votes SET vote = vote + 1 WHERE id = " . $_POST['id'];   
mysql_query($q);      
echo "You sent " . $_POST['id'];
}

当我执行我的AJAX函数时,似乎表决式.php永远不会运行

我知道我的AJAX函数被正确调用,因为alert(the_id);弹出正确的ID。

我知道我的vote.php运行正常,因为我可以使用名为“id”的文本框运行HTML方法=“post”,它将正确更新数据库。

有人能看出什么问题吗?

谢谢

3 个答案:

答案 0 :(得分:4)

您尝试在URL中发送变量,而不是POST变量。应该是这样的:

$(function(){      
    $("a.vote").click(function(){
        //get the id
        var the_id = $(this).attr('id');
        alert(the_id);

        //ajax post
        $.ajax({
            type: "POST",
            data: {id:the_id},
            url: "vote.php",
            success: function(msg)
            {
                $("span#message"+the_id).html(msg);
            }
        });
    });
});

您的数据应作为对象包含在内,而不是字符串URL。有关详细信息,请查看jquery API页面上的示例!

答案 1 :(得分:2)

我在代码中看到的主要内容是data: "?id="+the_id,?是不必要的,对于帖子请求不合逻辑。请改为:

data: {
    id: the_id
}

这让jQuery为你做了URL编码。

另外一点,你做$(this).attr(id)。这是非常低效的。改为this.id,效果完全相同快几百次 at least 20 times quicker

答案 2 :(得分:1)

您的data值不应该在开头有问号。