我有一个简单的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”,它将正确更新数据库。
有人能看出什么问题吗?
谢谢
答案 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
值不应该在开头有问号。