jquery при клике срабатывает только один раз - PullRequest
0 голосов
/ 19 апреля 2020

Я понимаю, основываясь на бесчисленных исследованиях по другим вопросам стекового обмена с похожими проблемами, что экземпляр события отменяется после события onclick, однако я не вижу способа его решить. Моя проблема заключается в том, что когда нажата радиокнопка, и ajax срабатывает и возвращает данные, я не могу получить их снова, чтобы получить следующую строку после только что полученной. Я делаю викторину, и когда пользователь нажимает правую кнопку-переключатель, он отправляет ajax запрос на получение следующего вопроса и следующего набора параметров. только изменения данных переключатели остаются неизменными только изменения данных dom.

здесь ajax:

<script>  
 $(document).ready(function(){  
      $(document).on("change", ":radio", function(){  
           var answer = $('input[type="radio"]:checked').val();
           var question_id = $('#dataContainer').data('value');  
           $.ajax({  
                url:"quizengine.php",  
                method:"POST",  
                data:{
                    answer:answer,
                    question_id:question_id
                },
                dataType: 'json',  
                success:function(response){ 
                    $('input[type="radio"]').prop('checked', false);
                    var num = $('#dataContainer').data("value") + response[5]; 
                    console.log(response);
                    $('#instruction').html(response[0]);
                    $('#question').replaceWith(response[1]);
                    $('#answer_one').html(response[2]);
                    $('#answer_two').html(response[3]);
                    $('#answer_three').html(response[4]);
                    $('#dataContainer').attr("data-value",num);  
                }  
           });

      });  
 });  
 </script> 

and here is the php that goes with it:
<?php 

if (isset($_POST['answer'])) {
    global $connection;
        $answer = $_POST['answer'];
        $question_id = $_POST['question_id'];
        $result = mysqli_query($connection, "SELECT is_right FROM answers WHERE question_id='$question_id'");
        $row = mysqli_fetch_assoc($result);
        if (isset($row)) {
            $correct = $row['is_right'];
            if ($answer === $correct) {
                $next = mysqli_query($connection, "SELECT Questions.question_id,Questions.lesson,Questions.instruction,Questions.question,Questions.image,Questions.option_type,Questions.question_value,Answers.answer_one,Answers.answer_two,Answers.answer_three,Answers.is_right FROM Questions LEFT JOIN Answers ON Questions.question_id = Answers.question_id WHERE Questions.question_id>'$question_id' ORDER BY Questions.question_id ASC LIMIT 1");

                $nextrow = mysqli_fetch_assoc($next);
                $row_info = array($nextrow['instruction'],$nextrow['question'],$nextrow['answer_one'],$nextrow['answer_two'],$nextrow['answer_three'],$nextrow['question_id']);
                echo json_encode($row_info);
                exit();
            }else{
                echo "error";
                exit();
            }
        }

    }




?>

1 Ответ

0 голосов
/ 19 апреля 2020

Вы проверяли, запускается ли обратный вызов 'fail' или 'done' во второй раз?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...