ポーリングシステムを構築するためにAjaxからPHPファイルに投稿しようとしましたが、ラジオボタンが表示されないため、リクエストを送信できません... Cookieチェックに問題があります...ユーザーIPを確認したい場合彼はすでにラジオボタンを非表示に投票し、そうでない場合はラジオボタンを表示します
index.html
<script type="text/javascript" > $(function(){ var loader=$('#loader'); var pollcontainer=$('#pollcontainer'); loader.fadeIn(); //Load the poll form $.get('poll.php', '', function(data, status){ pollcontainer.html(data); animateResults(pollcontainer); pollcontainer.find('#viewresult').click(function(){ //if user wants to see result loader.fadeIn(); $.get('poll.php', 'result=1', function(data,status){ pollcontainer.fadeOut(1000, function(){ $(this).html(data); animateResults(this); }); loader.fadeOut(); }); //prevent default behavior return false; }).end() .find('#pollform').submit(function(){ var selected_val=$(this).find('input[name=poll]:checked').val(); if(selected_val!=''){ //post data only if a value is selected loader.fadeIn(); $.post('poll.php', $(this).serialize(), function(data, status){ $('#formcontainer').fadeOut(100, function(){ $(this).html(data); animateResults(this); loader.fadeOut(); }); }); } //prevent form default behavior return false; }); loader.fadeOut(); }); function animateResults(data){ $(data).find('.bar').hide().end().fadeIn('slow', function(){ $(this).find('.bar').each(function(){ var bar_width=$(this).css('width'); $(this).css('width', '0').animate({ width: bar_width }, 1000); }); }); } }); </script>
poll.php
if (!isset($_POST['poll']) || !isset($_POST['pollid'])) {
$query = mysql_query("SELECT id, ques FROM questions ORDER BY id DESC LIMIT 1");
while ($row = mysql_fetch_assoc($query)) {
//display question
echo "<p class=\"pollques\" >" . $row['ques'] . "</p>";
$poll_id = $row['id'];
}
if (isset($_GET["result"]) == 1 || isset($_COOKIE["voted" . $poll_id]) == 'yes') {
//if already voted or asked for result
showresults($poll_id);
exit;
} else {
//display options with radio buttons
$query = mysql_query("SELECT id, value FROM options WHERE ques_id=$poll_id");
if (mysql_num_rows($query)) {
echo '<div id="formcontainer" ><form method="post" id="pollform" action="' . $_SERVER['PHP_SELF'] . '" >';
echo '<input type="hidden" name="pollid" value="' . $poll_id . '" />';
while ($row = mysql_fetch_assoc($query)) {
echo '<p><input type="radio" name="poll" value="' . $row['id'] . '" id="option-' . $row['id'] . '" />
<label for="option-' . $row['id'] . '" >' . $row['value'] . '</label></p>';
}
echo '<p><input type="submit" value="Submit" /></p></form>';
echo '<p><a href="' . $_SERVER['PHP_SELF'] . '?result=1" id="viewresult">View result</a></p></div>';
}
}
} else {
// i cant see this radio
if (isset($_COOKIE["voted" . $_POST['pollid']]) != 'yes') {
//Check if selected option value is there in database?
$query = mysql_query("SELECT * FROM options WHERE id='" . intval($_POST["poll"]) . "'");
if (mysql_num_rows($query)) {
$query = "INSERT INTO votes(option_id, voted_on, ip) VALUES('" . $_POST["poll"] . "', '" . date('Y-m-d H:i:s') . "', '" . $_SERVER['REMOTE_ADDR'] . "')";
if (mysql_query($query)) {
//Vote added to database
setcookie("voted" . $_POST['pollid'], 'yes', time() + 86400 * 300);
}
else
echo "There was some error processing the query: " . mysql_error();
}
}
showresults(intval($_POST['pollid']));
}