【发布时间】:2020-09-09 00:24:32
【问题描述】:
我正在做一个填空测验 (current state)。在我的index.php 中,我想验证用户input 是正确的答案(例如,它与我的 MySQL 服务器中的内容匹配)。
我可以通过<?php echo ... ?>-ing 来验证答案是否正确,但这会导致答案在 html 文件中,这具有允许作弊的缺点。
我从this answer 收集到,我需要使用类似$.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>
上面的 Javascript 函数是从我 index.php 的其他地方的 html 表单调用的;我可以使用console.log 来验证上面的input 变量是实际的用户输入。但是,从console.log来看,我使用$.post的方式是完全错误的,但我不确定正确的语法是什么。
在process_answer.php 我有:
<?php
if($_POST['guess'] == $problem_data["answer"]) echo "1";
else echo "0";
?>
我不知道如何从这里开始。
问题:如何确定 HTML 形式的答案是否正确(通过 $.post 调用 PHP),而不透露答案?
【问题讨论】:
-
所以将答案发布到服务器,让服务器检查它是否正确。让服务器返回一个布尔值
-
是的,这就是我想要做的。我只是没有成功。
-
我认为您可能需要做的是在检查之前
json_decodePHP 中的响应,因为您在$.post中传递了一个 JSON 对象 -
$.post('process_answer.php', {guess: input}).done(function(xxx) { console.log(xxx); }); -
@aljx0409 OP 没有发布 JSON。这就是 jQuery 发布
application/x-www-form-urlencoded数据的方式
标签: javascript php forms