Javascript 如何在不透露答案的情况下确定HTML表单答案是否正确(通过$.post调用PHP)?
我正在做一个填空测验()。在我的Javascript 如何在不透露答案的情况下确定HTML表单答案是否正确(通过$.post调用PHP)?,javascript,php,forms,Javascript,Php,Forms,我正在做一个填空测验()。在我的index.php中,我想验证用户的input是否是正确答案(如中所示,它与我的MySQL服务器中的内容相匹配) 我可以通过-ing答案来验证答案是否正确,但这会导致答案出现在html文件中,这有允许作弊的缺点 我从中收集,我需要使用类似于$.post('file.php',{variable:variableToSend})的东西,因此我尝试这样做: <script> function process_guess() { va
index.php
中,我想验证用户的input
是否是正确答案(如中所示,它与我的MySQL服务器中的内容相匹配)
我可以通过
-ing答案来验证答案是否正确,但这会导致答案出现在html文件中,这有允许作弊的缺点
我从中收集,我需要使用类似于$.post('file.php',{variable:variableToSend})的东西代码>,因此我尝试这样做:
<script>
function process_guess() {
var input = [...snip...];
[...snip...]
var is_correct = $.post('process_answer.php', {guess: input});
[...snip...]
if(is_correct == 1) {
[...snip...]
}
else {
[...snip...]
}
}
</script>
我不知道如何从这里开始
问题:如何在不透露答案的情况下确定HTML表单答案是否正确(通过$.post调用PHP?您的方法很好。ajax调用是一种很好的方法
根据,在Javascript中,您只需等待服务器响应。但是您必须注意这是异步的(因此下面的代码可能会在回调之前执行)。我建议这样做
$.post('process_answer.php', {guess: input})
.done(function( data ) {
// Execute your logic inside the request callback
if(data) {
[...snip...]
}
else {
[...snip...]
}
}
);
在php中,我建议退出脚本或只返回一个值
<?php
// return a json encoded boolean
header('Content-type: application/json');
echo json_encode($_POST['guess'] == $problem_data["answer"]);die;
?>
在菲尔的评论之后编辑:
Phil是对的,我已经更新了我的示例。所以将答案发布到服务器,让服务器检查它是否正确。让服务器返回布尔值是的,这就是我要做的。我只是没有成功。我认为您可能需要做的是在检查之前对PHP中的响应进行json\u解码
,因为您正在$.post
$.post('process\u answer.PHP',{guess:input}).done(函数(xxx){console.log(xxx);})代码>@aljx0409 OP未发布JSON。这就是jQuery发布application/x-www-form-urlencoded
数据的方式。PHP需要echo
,而不是return
。我还将添加header('Content-type:application/json')
和json\u encode()response@Phil你说得对,经过快速测试后,回报是不够的。使用框架的坏习惯:)
<?php
// return a json encoded boolean
header('Content-type: application/json');
echo json_encode($_POST['guess'] == $problem_data["answer"]);die;
?>