Php OnChange AJAX似乎与动态值有关

Php OnChange AJAX似乎与动态值有关,php,jquery,ajax,Php,Jquery,Ajax,因此,我的计划是在一个页面中显示所有项目及其特定集合,该集合引用$\u GET。一切都很好,它显示了所有内容,但当我想使用onchange查询提醒所有id时,似乎项目没有重复。我使用javascript上的alert来检查数据库中的id和其他对象 <?php $quiz_item = $_GET['quiz_item'] ; $item =0; $quiz_sql = "SELECT * from quizmultiple where quiz_set ='$quiz_item'";

因此,我的计划是在一个页面中显示所有项目及其特定集合,该集合引用
$\u GET
。一切都很好,它显示了所有内容,但当我想使用onchange查询提醒所有id时,似乎项目没有重复。我使用javascript上的alert来检查数据库中的id和其他对象

<?php 
$quiz_item = $_GET['quiz_item'] ; 
$item =0;
$quiz_sql = "SELECT * from quizmultiple 
where quiz_set ='$quiz_item'";
$quiz_query = mysqli_query($con,$quiz_sql);
while($quiz_row = 
mysqli_fetch_assoc($quiz_query)) {


?> 

 <div class='itemcontainer'>


 <div class="card" style="width:40%;">
   <div class="card-header">
 Question #: <?php  $item++;  echo $item;  
  ?>
  </div>
  <div class="card-body">
  <blockquote class="blockquote mb-0">
  <p><?php echo $quiz_row['question']; ?> 
 </p>

</blockquote>

</div>
<div style="margin:5px;">
<ul class="list-group list-group-flush" 
 style="width: 90%;"> 
<form id='form_question'>
<li class="list-group-item">
<input type="radio" id="choice_user" 
 class="form_question" name="gender" 
 value="<?php echo $quiz_row['choice_a'];? 
 >">
 </li>
 <li class="list-group-item">
 <input type="radio" id="choice_user" 
  class="form_question" name="gender" 
value="<?php echo $quiz_row['choice_b'];? 
>">
</li>
<li class="list-group-item"> 
<input type="radio" id="choice_user" 
 class="form_question" name="gender" 
 value="<?php echo $quiz_row['choice_c'];? 
 >">
 </li>
 <li class="list-group-item"> 
 <input type="radio" id="choice_user"  
 class="form_question" name="gender" 
 value="<?php echo $quiz_row['choice_d'];? 
 >">
</li>
<input type="text" id="number_id" value="<? 
php echo $quiz_row['id'];?>"/>
    <input type="text" id="true_answer" 
value="<?php echo 
$quiz_row['true_answer'];?>"/>
</form>
</ul>
</div>

</div>
</div> 
<?php 
}
?>  



<script>
$(document).ready(function() {
  $(".form_question").change(function(){

   var choice_final = $('#choice_user').val();
   var id_question = $('#number_id').val(); 
       $.ajax({
        url:"checkanswers.php",
        method:"POST",
        data: {id:id_question,choice:choice_final},
        success:function(data){
          alert(data);     



                }



            });
     });
  });

 </script> 



 <?php 

 if(isset($_POST)) {
$id = $_POST['id'];
$choice = $_POST['choice'];

echo $id;
echo $choice;
}

?>



  • 问题是,循环中的每个问题都使用相同的名称和ID。您需要将问题ID添加到所有这些内容中,以使它们不同。所有其他ID都应该是类

    然后,当用户回答一个问题时,您需要获得该答案的值,以及它所属问题的ID。您可以使用DOM导航函数来实现这一点

    <?php 
    $quiz_item = $_GET['quiz_item'] ; 
    $item =0;
    $quiz_sql = "SELECT * from quizmultiple 
    where quiz_set ='$quiz_item'";
    $quiz_query = mysqli_query($con,$quiz_sql);
    while($quiz_row = mysqli_fetch_assoc($quiz_query)) {
        ?> 
        <div class='itemcontainer'>
        <div class="card" style="width:40%;">
        <div class="card-header">
        Question #: <?php  $item++;  echo $item; ?>
        </div>
        <div class="card-body">
        <blockquote class="blockquote mb-0">
        <p><?php echo $quiz_row['question']; ?> 
        </p>
    
        </blockquote>
    
        </div>
        <div style="margin:5px;">
        <ul class="list-group list-group-flush" style="width: 90%;"> 
        <form>
        <li class="list-group-item">
        <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_a'];?>">
            </li>
        <li class="list-group-item">
        <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_b'];?>">
        </li>
        <li class="list-group-item"> 
        <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_c'];? >">
        </li>
        <li class="list-group-item"> 
        <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_d'];? >">
        </li>
        <input type="text" class="number_id" value="<?php echo $quiz_row['id'];?>"/>
        <input type="text" class="true_answer" value="<?php echo $quiz_row['true_answer'];?>"/>
        </form>
        </ul>
        </div>
    
        </div>
        </div> 
        <?php 
    }
    ?>  
    
    <script>
        $(document).ready(function() {
            $(".form_question").change(function(){
                var choice_final = $(this).val();
                var id_question = $(this).closest('form').find('.number_id').val(); 
                $.ajax({
                    url:"checkanswers.php",
                    method:"POST",
                    data: {id:id_question,choice:choice_final},
                    success:function(data){
                        alert(data);     
                    }
                });
            });
        });
    </script> 
    <?php 
    if(isset($_POST)) {
        $id = $_POST['id'];
        $choice = $_POST['choice'];
    
        echo $id;
        echo $choice;
    }
    ?>
    
    
    
    


    • 问题是,循环中的每个问题都使用相同的名称和ID。您需要将问题ID添加到所有这些内容中,以使它们不同。所有其他ID都应该是类

      然后,当用户回答一个问题时,您需要获得该答案的值,以及它所属问题的ID。您可以使用DOM导航函数来实现这一点

      <?php 
      $quiz_item = $_GET['quiz_item'] ; 
      $item =0;
      $quiz_sql = "SELECT * from quizmultiple 
      where quiz_set ='$quiz_item'";
      $quiz_query = mysqli_query($con,$quiz_sql);
      while($quiz_row = mysqli_fetch_assoc($quiz_query)) {
          ?> 
          <div class='itemcontainer'>
          <div class="card" style="width:40%;">
          <div class="card-header">
          Question #: <?php  $item++;  echo $item; ?>
          </div>
          <div class="card-body">
          <blockquote class="blockquote mb-0">
          <p><?php echo $quiz_row['question']; ?> 
          </p>
      
          </blockquote>
      
          </div>
          <div style="margin:5px;">
          <ul class="list-group list-group-flush" style="width: 90%;"> 
          <form>
          <li class="list-group-item">
          <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_a'];?>">
              </li>
          <li class="list-group-item">
          <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_b'];?>">
          </li>
          <li class="list-group-item"> 
          <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_c'];? >">
          </li>
          <li class="list-group-item"> 
          <input type="radio" class="choice_user form_question" name="gender_<?php echo $quiz_row['id'];?>" value="<?php echo $quiz_row['choice_d'];? >">
          </li>
          <input type="text" class="number_id" value="<?php echo $quiz_row['id'];?>"/>
          <input type="text" class="true_answer" value="<?php echo $quiz_row['true_answer'];?>"/>
          </form>
          </ul>
          </div>
      
          </div>
          </div> 
          <?php 
      }
      ?>  
      
      <script>
          $(document).ready(function() {
              $(".form_question").change(function(){
                  var choice_final = $(this).val();
                  var id_question = $(this).closest('form').find('.number_id').val(); 
                  $.ajax({
                      url:"checkanswers.php",
                      method:"POST",
                      data: {id:id_question,choice:choice_final},
                      success:function(data){
                          alert(data);     
                      }
                  });
              });
          });
      </script> 
      <?php 
      if(isset($_POST)) {
          $id = $_POST['id'];
          $choice = $_POST['choice'];
      
          echo $id;
          echo $choice;
      }
      ?>
      
      
      
      



      • id必须是唯一的,不能有多个
        id=“choice\u user”
        @imu,这是一个输入错误。它与动态值无关
        $(“#choice_user”).val()
        将只获取第一个按钮的值,而不是所选按钮的值。是的,它确实会像您所说的那样获取第一个ID的值。我不认为这是一个重复的问题,因为它有不同的内容和问题本身@巴玛,谢谢你我误解了吗?除了获取单选按钮的值,您还有什么问题?id必须是唯一的,不能有多个
        id=“choice\u user”
        @imu,这是一个输入错误。它与动态值无关
        $(“#choice_user”).val()
        将只获取第一个按钮的值,而不是所选按钮的值。是的,它确实会像您所说的那样获取第一个ID的值。我不认为这是一个重复的问题,因为它有不同的内容和问题本身@巴玛,谢谢你我误解了吗?除了获取单选按钮的值之外,您还有什么问题?谢谢。它以某种方式解决了它的逻辑部分。var id_-question=$(this).nestest('form').find('number_-id').val();帮助我很多,但显示出一个错误;$_POST['ID']的ID的未识别索引;我有一个打字错误,
        class=
        而不是
        class=
        。哦,是的,你在收音机上复制了这个课程,但一切都很好。非常感谢。是的,我正在将
        id
        更改为
        class
        ,但是忘记已经有一个类了。谢谢。它以某种方式解决了它的逻辑部分。var id_-question=$(this).nestest('form').find('number_-id').val();帮助我很多,但显示出一个错误;$_POST['ID']的ID的未识别索引;我有一个打字错误,
        class=
        而不是
        class=
        。哦,是的,你在收音机上复制了这个课程,但一切都很好。非常感谢。对,我正在将
        id
        更改为
        class
        ,但忘记已经有一个类了。