我正在使用此代码调用ajaxvote.php
$('.vote').click(function(){
$.ajax({
url: 'ajaxvote.php',
type: 'POST',
cache: 'false',
success: function () { alert("Success!"); } ,
error: function () { alert("Error!"); }});
var self = $(this);
var action = self.data('action');
var parent = self.parent().parent();
var postid = parent.data('postid');
var score = parent.data('score');
if (!parent.hasClass('.disabled')) {
if (action == 'up') {
parent.find('.vote-score').html(++score).css({'color':'orange'});
self.css({'color':'orange'});
$.ajax({data: {'postid' : postid, 'action' : 'up'}});
}
else if (action == 'down'){
parent.find('.vote-score').html(--score).css({'color':'red'});
self.css({'color':'red'});
$.ajax({data: {'postid' : postid, 'action' : 'down'}});
};
parent.addClass('.disabled');
这是我网页上的代码
<div class="item" data-postid="<?php echo $rows['ID'] ?>" data-score="<?php echo $rows['VOTE'] ?>">
<div class="vote-span">
<div class="vote" data-action="up" title="Vote up"><i class="fa fa-camera-retro"></i></div>
<div class="vote-score"><?php echo $rows['VOTE'] ?></div>
<div class="vote" data-action="down" title="Vote down"><i class="fa fa-camera-retro"></i></div>
</div>
这是我的php代码
if ($_SERVER['HTTP_X_REQUESTED_WITH']) {
if (isset($_POST['postid']) && (isset($_POST['action']))) {
$postId = $_POST['postid'];
if (isset($_SESSION['vote'][$postId])) return;
$query = $mysqli - > query("SELECT VOTE from stories WHERE ID = $postId LIMIT 1");
while ($rows = mysqli_fetch_array($query)) {
if ($_POST['action'] === 'up') {
$vote = ++$rows['VOTE'];
} else {
$vote = --$rows['VOTE'];
}
$mysqli - > query("UPDATE stories SET VOTE = $vote WHERE ID = $postId ");
$_SESSION['vote'][$postId] = true;
}
}
}
我知道我可以连接到数据库,因为我可以登录。我也获得了上面设置的警报成功,但是,数据库中的值没有更新。
修改 我添加了更多我已经写过的Ajax代码。
答案 0 :(得分:1)
通过ajax发布时,您需要发送您实际想要发布的数据。
var postData = {name:"Mister",lastName:"Frodo"}; //Array
$.ajax({
url : "ajaxvote.php",
type: "POST",
data : postData,
success: function(data, textStatus, jqXHR)
{
//Handle response
},
error: function (e) {
// Handle error
}
});
在这种情况下,需要抓取帖子ID和分数。您还需要获取单击的操作类型(通常通过对具有class =&#34的div进行单击事件绑定;投票&#34;。例如,让我们将其设置为&#34;现在:&#34;
var postId = $('div.item').attr('data-postid').val();
var score = $('div.item').attr('data-score').val();
var postData = {postId: postId, score: score, action: 'up'}
您现在可以发布&#34; postData&#34;到你的ajaxvote.php。
此外,您可以使用jQuery&#39; s $.POST method
$ .post(&#34; ajaxvote.php&#34;,{name:&#34; Mister&#34;,lastName:&#34; Frodo&#34;});
现在要解析表单,看看jQuery's serialize,它会通过您的表单获取每个输入的[name]属性以及值来创建数据字符串。
示例强>
name=Mister&lastName=Frodo
这是发送&#34;数据&#34;的理想选择。 $ .ajax中的属性。 Have a look at this answer for more regarding jQuery's serialize