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