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;
?>