Ajax值不传输给PHP

时间:2011-07-07 02:12:05

标签: php ajax variables scope echo

我有这个星级评分系统。单击星形时,它应该将值传递给函数。然后使用AJAX将其发布到外部PHP文件。唯一的问题是,当它到达PHP文件时,它会变为null或没有值。

我将尝试使用AJAX在警告框中回显$ _POST ['vote']变量,它是空白的,因此它不会返回为“NULL”或“0”,它只是什么都没有。我不确定我在哪里丢失了值,因为我可以一直跟踪它到send()函数。有人看到问题吗?

HTML:          

<style type="text/css">
    #container{margin: 10px auto;width: 500px;height: 300px;background-color: gray;}
    #starContainer{padding-top:20px;margin:0 auto;width:150px;}
    .box{height:28px;width:30px;float:left;position:relative;z-index:5;cursor:pointer;}
    .star{background-image:url('emptyStar.png');background-repeat:no-repeat;}
    .starHover{background-image:url('goldStar.png');background-repeat:no-repeat;}
    #voteBar{float:left;height:28px;background-color:#dbd923;position:relative;top:-28px;z-index:1;}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('.box').hover(
        // Handles the mouseover
        function() {
            $(this).prevAll().andSelf().addClass('starHover');
        },
        // Handles the mouseout
        function() {
            $(this).prevAll().andSelf().removeClass('starHover'); 
        }
    );
});

    function Cast(vote)
    {
        if(window.XMLHttpRequest)
        {
            xmlhttp = new XMLHttpRequest();
        }
        else
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.onreadystatechange = function()
        {
            if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
            {
                alert(xmlhttp.responseText);
                var json = JSON.parse(xmlhttp.responseText);
            }
        }

        xmlhttp.open("POST", "process.php", true);
        xmlhttp.send('vote=' + vote);
    }
</script>

</head>
<body>

<div id="container">
    <center>
        <div id="starContainer">
            <div class="box star" onclick="Cast(1)"></div>
            <div class="box star" onclick="Cast(2)"></div>
            <div class="box star" onclick="Cast(3)"></div>
            <div class="box star" onclick="Cast(4)"></div>
            <div class="box star" onclick="Cast(5)"></div>
            <div id="voteBar"></div>
        </div>
    </center>
</div>

</body>
</html>

PHP:

<?php
$vote = $_POST['vote'];

$totalVoteValue = 0;
$amtVotes = 1;

$width = (($totalVoteValue + (($vote - $totalVoteValue) / $amtVotes)) / 5) * 150;

echo $width;
?>

2 个答案:

答案 0 :(得分:3)

    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

添加此功能可能有所帮助(在打开后发送之前)

答案 1 :(得分:0)

你已经在使用jquery(一个非常非常老的版本,如果我可以说..),为什么不使用它内置的ajax处理程序? http://api.jquery.com/jQuery.post/

$.post('process.php', {vote: vote}, function(data) {
  $('.result').html(data);
});