Значение Ajax не передается в PHP - PullRequest
2 голосов
/ 07 июля 2011

У меня есть эта звездная рейтинговая система.Когда вы нажимаете на звездочку, она должна передать значение в функцию.Затем, используя AJAX, он отправляет его во внешний файл PHP.Единственная проблема заключается в том, что когда он попадает в файл PHP, он принимает значение NULL или не имеет значения.

Я попытаюсь отобразить переменную $ _POST ['voice'] в окне предупреждения, используя AJAX, и она пустапоэтому он не возвращается как «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 ]

3 голосов
/ 07 июля 2011
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')

добавление может помочь (перед отправкой после открытия)

0 голосов
/ 07 июля 2011

Вы уже используете jquery (очень очень очень старая версия, если можно так сказать ...), почему бы не использовать встроенный обработчик ajax? http://api.jquery.com/jQuery.post/

$.post('process.php', {vote: vote}, function(data) {
  $('.result').html(data);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...