你能找到问题吗?它不会将其插入数据库,但我没有错误。
我是一个总的ajax noob是的,我发现这个代码并修改了一下,我认为它应该可以工作,但它不会
rate.php
$v = $_GET['v'];
$conn = mysql_connect('***', '***', '***');
$db_selected = mysql_select_db('***', $conn);
$sql="INSERT INTO votes (title_id, score) VALUES (1, $v)";
$result = mysql_query($sql) or die(mysql_error());
echo "Vote has been added.";
?>
title.php
<script type="text/javascript">
function addVote(str)
{
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)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","include/ajax/rate.php?v="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
Rate: <a href="#" onclick="addVote(1)">1</a> <a href="#" onclick="addVote(2)">2</a> <a href="#" onclick="addVote(3)">3</a> <a href="#" onclick="addVote(4)">4</a> <a href="#" onclick="addVote(5)">5</a>
答案 0 :(得分:4)
看不出任何错误(就逻辑而言)。所以这是一个模糊的调试答案:
首先,你应该直接调用你的php脚本来查看它是否输出了什么:
http://localhost/thingy/include/ajax/rate.php?v=3
如果可行,则问题是您的Javascript代码。尝试使用jQuery只是为了确保:
function addVote(n) {
$('#txtHint').load("rate.php?v=" + n);
}
答案 1 :(得分:3)
尝试在查询字符串值中添加单引号:
$sql="INSERT INTO votes (title_id, score) VALUES ('1', '" . mysql_real_escape_string ($v) . "')";
并使用
mysql_real_escape_string (string $unescaped_string [, resource $link_identifier ]);
关于要注入的变量
答案 2 :(得分:3)
添加时间戳以避免缓存:
xmlhttp.open("GET","include/ajax/rate.php?t="+new Date().getTime()+"&v="+str,true);
输入验证:
$v = filter_input(INPUT_GET,
'v',
FILTER_VALIDATE_INT,
array(
'flags' => FILTER_NULL_ON_FAILURE,
'options' => array('min_range' => 1, 'max_range' => 5)
));
if(!$v){exit();}