首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX不会做我想要的事情

AJAX不会做我想要的事情
EN

Stack Overflow用户
提问于 2011-02-13 08:41:36
回答 3查看 143关注 0票数 0

你能找到问题所在吗?它没有将它插入到数据库中,但我没有得到任何错误。

我是一个彻头彻尾的ajax新手,是的,我找到了这段代码,并对它进行了一些修改,我认为它应该可以工作,但它不能工作

rate.php

代码语言:javascript
复制
$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

代码语言:javascript
复制
<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>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-13 09:05:29

添加时间戳以避免缓存:

代码语言:javascript
复制
xmlhttp.open("GET","include/ajax/rate.php?t="+new Date().getTime()+"&v="+str,true);

输入验证:

代码语言:javascript
复制
$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();}
票数 3
EN

Stack Overflow用户

发布于 2011-02-13 08:54:01

我看不到任何错误(就逻辑而言)。因此,这是一个模糊的调试答案:

首先,你应该直接调用php脚本,看看它是否输出以及输出了什么:

http://localhost/thingy/include/ajax/rate.php?v=3

如果它能工作,那么问题出在你的Javascript代码上。尝试使用jQuery以确保:

代码语言:javascript
复制
function addVote(n) {
    $('#txtHint').load("rate.php?v=" + n);
}
票数 4
EN

Stack Overflow用户

发布于 2011-02-13 08:51:32

尝试将单引号放在查询字符串的值中:

代码语言:javascript
复制
$sql="INSERT INTO votes (title_id, score) VALUES ('1', '" . mysql_real_escape_string ($v) . "')";

并使用

mysql_real_escape_string (string $unescaped_string [, resource $link_identifier ]);

关于要注入的变量

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4981667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档