我用ajax投票,每个IP都可以投票一次。 它有效,它不会多次添加到数据库。 现在我想立即向用户表明他投了票,所以我使用了这段代码:
function vote(id)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if (xmlhttp.responseText == "true1")
document.getElementById("b"+id).innerHTML = parseInt(document.getElementById("b"+id).innerHTML) + 1;
}
}
xmlhttp.open("GET","vote.php?id="+id,true);
xmlhttp.send();
}
在vote.php页面中,这里是代码:
if (!(mysql_fetch_array(mysql_query("SELECT * FROM `votes` WHERE IP = '$IP'"))))
{
echo "true1";
}
else
{
echo "false0";
}
适用于FireFox和chrome。 尝试用萤火虫,我确实得到了" true1"或者" false0"但是使用IE它不起作用,为什么?
答案 0 :(得分:4)
将你的ajax请求改为POST而不是GET IE因为GET的cach'ing请求而臭名昭着。
不要忘记将PHP变量更新为$ _POST。
一旦完成,问题就会消失。