Php 提交答案后,在同一页面上显示答案是否正确,不刷新

Php 提交答案后,在同一页面上显示答案是否正确,不刷新,php,ajax,Php,Ajax,“我正在做一个测验,我想让它告诉我答案是正确的还是不正确的。我的问题是它会这样做,但它会在下一个问题的下一页告诉我答案是正确的还是不正确的,因为每次我提交答案时,它都会刷新页面。”我想让它告诉学生,在进入下一页之前,在同一页中它是正确的还是不正确的。 如果我删除ajax,它将显示答案是正确的还是不正确的,但会在下一页显示新问题。所有代码都在同一个Php/html页面中。提前谢谢 <?php while($row5 = mysqli_fetch_assoc($res)): ;{ ?>

“我正在做一个测验,我想让它告诉我答案是正确的还是不正确的。我的问题是它会这样做,但它会在下一个问题的下一页告诉我答案是正确的还是不正确的,因为每次我提交答案时,它都会刷新页面。”我想让它告诉学生,在进入下一页之前,在同一页中它是正确的还是不正确的。 如果我删除ajax,它将显示答案是正确的还是不正确的,但会在下一页显示新问题。所有代码都在同一个Php/html页面中。提前谢谢

<?php while($row5 = mysqli_fetch_assoc($res)): ;{ ?>
    <h1 align="center" ><?php echo $row5['Question'] ?></h1>
    <?php 
    $id = $row5['QuizzId'];
    $question = $row5['Question'];
    $correctAnswer=$row5['correctAnswer'];
    $ans_array = array($row5['notCorrect1'],$row5['notCorrect2'], $row5['correctAnswer']);
    shuffle($ans_array);
?>
    <label>A<input type="radio" value="<?php echo $ans_array[0]; ?>" name="name"> <?php echo $ans_array[0]; ?></label>
    <br/>
    <br/>
    <label>B<input type="radio" value="<?php echo $ans_array[1]; ?>" name="name"> <?php echo $ans_array[1]; ?></label>
    <br/>
    <br/>
    <label>C <input type="radio" value="<?php echo $ans_array[2]; ?>" name="name"> <?php echo $ans_array[2]; ?></label>
    <input type="hidden" name="correctAn" value="<?php echo $correctAnswer; ?>">
<?php } ?>
<br />
<br />
<input type="submit" value="Submit" name="correct">
<script>
$('#correct').click(function() {
    $.ajax({
        type: 'POST',
        url: 'questions_1.php',
        data: 'correctAnswer1',
        success: function(php) {
            alert('yes');
        }               
    });
});
</script>
<?php
if($_GET["correctAnswer1"]){
    $mianswer = $_POST["name"];
    $correctAn = $_POST["correctAn"];
    if($mianswer==$correctAn) {
        echo "<h1>Great Job</h1>";
        echo '<br>';
        echo "<h1>The correct answer was $correctAn</h1>";
    } else {
        echo '<h1>Not correct</h1>';
        echo "<h1>The correct answer was $correctAn</h1>";
    }
}
?>


A首先,在您的
ajax
请求中,您已经定义了
类型:'POST'
,但是您已经在php中使用了
$\u GET
,将其更改为:
if($\u POST['something'])

然后您需要获取用户选择的
单选按钮的值和
正确答案值
。即:

 $("input[name='correct']").click(function(e) {
     e.preventDefault();
    //getting selected radio button value
    var name=$("input[name='name']:checked").val();
   //getting value of correct answer
    var correctAn=$("input[name='correctAn']").val();
        $.ajax({
            type: 'POST',
            url: 'questions_1.php',
             data: {'correctAn': correctAn,'name':name },//<-passing value to php
            success: function(php) {
                alert(php);
            }               
        });

    });

首先,在您的
ajax
请求中,您定义了
类型:'POST'
,但您在php中使用了
$\u GET
,即:
if($\u POST['something'])

然后您需要获取用户选择的
单选按钮的值和
正确答案值
。即:

 $("input[name='correct']").click(function(e) {
     e.preventDefault();
    //getting selected radio button value
    var name=$("input[name='name']:checked").val();
   //getting value of correct answer
    var correctAn=$("input[name='correctAn']").val();
        $.ajax({
            type: 'POST',
            url: 'questions_1.php',
             data: {'correctAn': correctAn,'name':name },//<-passing value to php
            success: function(php) {
                alert(php);
            }               
        });

    });

由于您将正确答案作为隐藏字段传递,因此无需进行ajax调用,您可以在客户端管理所需内容。这是否是正确的方法是值得怀疑的,因为检查页面将显示正确的答案,但根据您当前所做的,这是一种可能性

$('form').on('submit', function(ev) {
    ev.preventDefault(); // This prevents form submission
    let answer = $("input[name='name']:checked").val();
    let correct = $("input[name='correctAn']").val();
    if (answer == correct) { // Check if selected option is the correct one
        alert('Congratulations!');
    }
});

由于您将正确答案作为隐藏字段传递,因此无需进行ajax调用,您可以在客户端管理所需内容。这是否是正确的方法是值得怀疑的,因为检查页面将显示正确的答案,但根据您当前所做的,这是一种可能性

$('form').on('submit', function(ev) {
    ev.preventDefault(); // This prevents form submission
    let answer = $("input[name='name']:checked").val();
    let correct = $("input[name='correctAn']").val();
    if (answer == correct) { // Check if selected option is the correct one
        alert('Congratulations!');
    }
});


嗯,对于初学者来说,不能有多个相同的名称……我忘了提到,当我添加ajax函数时,它根本没有显示正确或错误的消息。@Sablefoste是的,它们是单选按钮。如果你将正确的答案作为隐藏字段传递,为什么要使用ajax呢?对于初学者来说,您不能有多个相同的名称…我忘了提到,当我添加ajax函数时,它根本没有显示正确或不正确的消息。@Sablefoste是的,它们是单选按钮。如果您将正确的答案作为隐藏字段传递,为什么还要使用ajax?代码不起作用,当我单击submit时,它会显示警报,页面中包含所有css、javascript和html源代码;将其更改为html并在php代码中添加a,但它所做的是插入另一个带有另一个问题的页面,并在其中显示上一个问题页面中的最后一个答案是否正确。@ElvisCruz我在上面的评论中提出了这个问题。当您将正确答案作为隐藏字段传递时,为什么要使用ajax?问题出在php代码中:您没有任何逻辑来确定请求是常规请求,您必须显示问题表单,还是ajax请求,并且必须显示消息。将文件开头的代码放入
else
块中,用于
if(isset($\u POST))…
问题是正在刷新新页面,我希望它显示答案是否正确page@ElvisCruz要做到这一点,当页面中已经有了正确的答案时,不需要ajax调用。只是防止表单提交。你不能在警报中显示html。代码不起作用,当我单击submit时,它会显示警报,页面中有所有css、javascript和html源代码。我认为问题在于成功:函数(php),但我尝试了以下几件事:;将其更改为html并在php代码中添加a,但它所做的是插入另一个带有另一个问题的页面,并在其中显示上一个问题页面中的最后一个答案是否正确。@ElvisCruz我在上面的评论中提出了这个问题。当您将正确答案作为隐藏字段传递时,为什么要使用ajax?问题出在php代码中:您没有任何逻辑来确定请求是常规请求,您必须显示问题表单,还是ajax请求,并且必须显示消息。将文件开头的代码放入
else
块中,用于
if(isset($\u POST))…
问题是正在刷新新页面,我希望它显示答案是否正确page@ElvisCruz要做到这一点,当页面中已经有了正确的答案时,不需要ajax调用。只是防止表单提交。并且不能在警报中显示html。