Ajax代码和PHP无线电输入有什么问题?

时间:2016-04-25 13:08:35

标签: javascript php jquery ajax

在此代码中,我无法获取用于更新数据库的无线电输入值:

<script type="text/javascript">
function getVote() {
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("poll").innerHTML=xmlhttp.responseText;
    }
  }
  var vote = $('input[name=optionid]:checked').val();
  xmlhttp.open("GET","poll_vote.php?vote="+vote);
  xmlhttp.send();
}

在相同的文件上代码是:

$options = mysql_query ("select * from options where pollid='poll'");
                while ($row1 = mysql_fetch_array($options))
                {   $id = $row1['id'];
                    $option = $row1['choice'];
                    $votes = $row1['votes'];
                        echo '<form id="poll">';
                        echo '<input type="radio" name="optionid" value="'.$id.'" onclick="getVote()" /><span>'.$option.'</span><br />';
                }

                        echo '</form>';

如何获取已检查的无线电值以在另一页上使用它&#34; poll_vote.php&#34;? 顺便说一句,输入无线电使用的选项是3。

2 个答案:

答案 0 :(得分:0)

显然我不知道是否还有其他问题,但是应该测试这两个变化会发生什么,也许它会起作用。

<强>的Javascript

LocalTime time = LocalTime.now(/* Optional but recommended: specify timezone */);
return time.isAfter(LocalTime.of(18, 0))
    || time.isBefore(LocalTime.of(6, 0));

<强> PHP

function getVote() {
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById("poll").innerHTML=xmlhttp.responseText;
    }
  }
  var vote = $(this).attr('value');
  alert('your vote: ' + vote); // WITH THIS CHECK IF THE VOTE IS CORRECT
  xmlhttp.open("GET","poll_vote.php?vote="+vote);
  xmlhttp.send();
}

答案 1 :(得分:0)

我注意到的问题是,这一行echo '<form id="poll">';被重复打印,与返回的行数一样多。

在您拥有的浏览器中,

<form id="poll">
  <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()">
<form id="poll">
  <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()">
<form id="poll">
  <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()">
<form id="poll">
  <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()">
<form id="poll">
  <input type="radio" name="optionid" value="<?php echo $id; ?>" onclick="getVote()">
.
.
.

在此结束标记

之前,您会遇到许多重复的表单
</form>

我建议您以这种方式安排代码,以便更好地进行分析

<?php $options = mysql_query ("select * from options where pollid='poll'"); ?>
<form class="" id="poll" action="" method="post">
<?php while ($row1 = mysql_fetch_array($options)): ?>
  <?php
    $id     = $row1['id'];
    $option = $row1['choice'];
    $votes  = $row1['votes'];
  ?>
  <input type="radio" name="option<?php echo $id; ?>" value="<?php echo $id; ?>" onclick="getVote()">
  <span><?php echo $option; ?></span>
<?php endwhile; ?>
</form>

并将打印您的表格,

<form id="poll">
  <input type="radio" name="option1" value="<?php echo $id; ?>" onclick="getVote()">
  <input type="radio" name="option2" value="<?php echo $id; ?>" onclick="getVote()">
  <input type="radio" name="option3" value="<?php echo $id; ?>" onclick="getVote()">
  <input type="radio" name="option4" value="<?php echo $id; ?>" onclick="getVote()">
</form>

注意这部分name="option<?php echo $id; ?>"?我就是这样做的,这样你就可以为每个单选按钮添加唯一的变量,并且不要忘记像<form class="" id="poll" action="" method="post">那样制作你的表单,以便通过方法发布数据。

这可能不是解决方案,我希望这会有所帮助。