我几乎没有创建一个脚本(因为我只是ajax中的初学者),事实上我已经从某个地方复制了它的一些部分(ajax脚本)。但是,当我点击链接(投票/投票)时,即使Mysql数据库中的值没有变化也没有任何反应,但点击提交按钮后,我的MySql数据库发生了变化!这是我的代码 -
- ::: - HTML PART(test.php) - ::: -
<html>
<title>
TEST
</title>
<head>
<script type="text/javascript" src="jquery.1.4.4.js"></script>
<script type="text/javascript">
function vote(type)
{
$.ajax({
'url': 'test.func.php',
'type': 'POST',
'dataType': 'json',
'data': {type: type},
'success': function(data)
{
if(data.status)
{
if(data.voted)
{
$(document).ready(function () {
$("span#status"+type).attr("innerHTML","You have voted up!");
});
}
else
{
$(document).ready(function () {
$("span#status"+type).attr("innerHTML","You have voted Down!");
});
}
}
},
beforeSend: function()
{
$(document).ready(function () {
$("span#status"+type).attr("innerHTML","Voting....");
});
},
'error': function(data)
{
$(document).ready(function () {
$("span#status"+type).attr("innerHTML","An error occureed");
});
}
});
}
</script>
</head>
<body>
<a href="#" onclick="vote('up')" > Vote Up </a>
<span id="status_up" ></span>
<br>
OR
</br>
<a href="#" onclick="vote('down')" > Vote Down </a>
<span id="status_down" ></span>
</body>
</html>
- ::: - PHP PART(test.func.php) - ::: -
<?php
function db_connect($i)
{
if(isset($i))
{
if(mysql_connect('localhost', 'root', 'root'))
{
if(mysql_select_db($i))
{
return;
}
else
{
echo 'ERROR';
}
}
else
{
echo 'ERROR';
}
}
else
{
echo 'ERROR';
}
}
if($_POST)
{
db_connect('tests');
$vote_type=$_POST['type'];
$post_id = '123';
$query = mysql_query("SELECT * FROM test WHERE post_id='$post_id'");
$cur_vote_get = mysql_fetch_array($query);
$vote_up = $cur_vote_get['votes']+1;
$vote_down = $cur_vote_get['votes']-1;
if($vote_type=='up')
{
mysql_query("UPDATE test SET votes='$vote_up' WHERE post_id='$post_id'");
return json_encode(array("status" => true, "voted" => true));
}
elseif($vote_type=='down')
{
mysql_query("UPDATE test SET votes='$vote_down' WHERE post_id='$post_id'");
return json_encode(array("status" => true, "voted" => false));
}
}
?>
解决了JavaScript错误!
一切都解决了!
由于我对Ajax很新,所以我无法找到任何解决方案。
答案 0 :(得分:3)
如果你的代码很严格,(我的意思是,如果你只是从真正的.php文件中复制/粘贴它),那么第一个.php文件的第二个脚本块就会出现拼写错误。
javasript - &gt; JAVASCRIPT
试一试。
答案 1 :(得分:2)
你没有回应json,你正在回应随机文本('Vote up'),这将打破ajax json解析器。
删除echo 'Voted!';
并尝试echo json_encode(array("status" => true, "voted" => false));
。
您也可以跳过SELECT
查询并执行:UPDATE test SET votes=votes+1 WHERE post_id='$post_id'