【发布时间】:2018-12-26 17:52:33
【问题描述】:
我刚刚阅读了很多关于此的主题,但我仍然无法使其发挥作用。将其上传到实时服务器并使用 XAMPP 在 localhost 上尝试,仍然发生相同的情况。
在开发者工具/firebug 上我可以看到结果,在网络/XHR 上也是如此。任何帮助表示赞赏。
我想将单选按钮提交值与 php 变量进行比较(如 index.php 所示)在控制台上它按预期工作,但在我的浏览器窗口上却没有。
html.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form name="curso_activo" id="form_preguntas" method="POST" action="" >
<p> option1 </p>
<input id="input_1" type="radio" name="html1" value="a">
<span class="checkmark"></span>
<p> option2 </p>
<input id="input_2" type="radio" name="html1" value="b">
<span class="checkmark"></span>
<p> option3 </p>
<input id="input_3" type="radio" name="html1" value="c">
<span class="checkmark"></span>
<p> option4 </p>
<input id="input_4" type="radio" name="html1" value="d">
<span class="checkmark"></span>
<div class="respuesta_submit">
<input type="submit" id="Respuesta_send" class="button_submit" value="Enviar" name="Enviar_respuesta">
</div>
</form>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"> </script>
<script src="ajax.js"></script>
</body>
</html>
ajax.js
$("#form_preguntas").submit(function (e) {
e.preventDefault();
var question = $("#input_1").attr('name');
var answer = $("input[name=" + question + "]:checked").val();
$.ajax({
type: 'POST',
data: {'param': answer},
success: function (data,) {
console.log(data);
alert(question);
},
error: function () {
console.log('error');
}
});
});
index.php
<?php
require"html.php";
$correct_answer = 'b';
if ($_POST['param'] == $correct_answer) {
echo "Correct";
}
?>
【问题讨论】:
-
它不是按预期工作吗? AJAX 不会刷新页面,它只是在后台发送和接收数据,而不需要重新加载页面(除非您告诉 JavaScript)。因此,在您的控制台中,您会看到 AJAX 响应,但在浏览器窗口中,您会一直看到页面,就好像表单没有提交一样。
-
@DecentDabbler 是的,你是对的,但如果我想完成这个 if (isset($_POST['param'])) { echo "PRINT THIS"; } 我不能在同一页上做吗?仅适用于控制台
-
是的,但是您现在已经编辑了您的问题。最初您想在原始图片中显示“POST PARAM IS SET”(在右侧的控制台部分)。 :) 我只是认为您误解了 AJAX 的工作原理。如果你愿意,我可以在答案中解释。
-
是的,您可以这样做:或者不使用 AJAX,而只是像平常一样发布表单(这将刷新页面),或者使用 AJAX 但替换初始页面的原始 HTML当 AJAX 返回响应时使用 JavaScript(可能解释起来有点宽泛)。您可以搜索 StackOverflow,了解如何用 JavaScript/AJAX 替换 HTML。已经有很多例子了。
-
@Decent Dabbler 谢谢你的回答,你让我重新思考了 Ajax 是如何工作的。设法使它现在工作。稍后将回答我自己的问题