我已经编写了一个php函数来生成一个用于反垃圾邮件目的的随机数学问题。它为两个会话变量设置了一个问题和答案。
在HTML文件中,我在文档就绪事件中调用该函数并将结果发送到问题的div,这样可以正常工作。
$(document).ready(function(){
$.ajax({
url: "sec.php",
type: "POST",
data: {"GetQA":""},
success: function(data) {
$("#no_spam_Q").replaceWith(data);
}
});
});
我遇到问题的是在用户点击提交按钮后刷新问题的文字。
jQuery的:
$(document).on("click", "#submit", function () {
var comment = document.getElementById('comment').value
var no_spam = document.getElementById('no_spam').value
$.ajax({
type:"POST",
url: "comments-set.php",
dataType: "html",
data:{no_spam, comment:comment},
success: function(data){
$("#display").html(data);
$.ajax({
url: "sec.php",
type: "POST",
data: {"GetQA":""},
success: function(data) {
$("#no_spam_Q").replaceWith(data);
}
});
}
});
});
这里嵌套的ajax调用应该刷新问题&回答,但总是出现失败。
PHP:
session_start();
Function GetQA($str){
// some code to generate the question & answer
return $secFinal;
}
if (isset($_POST['GetQA'])) {
echo GetQA($_POST['GetQA']);
}else{
echo "not set";
}
php始终返回"未设置"所以反垃圾邮件问题文本没有改变。在另一个检查答案的PHP文件中,如果给出错误的答案(仅用于调试),我会回答正确的答案。令人困惑的是,即使没有设置"正在返回一个新的答案,因为两次输入相同的答案都无法通过我的检查,并显示有关正确答案的回音信息。
我猜测这与查询异步有关但是尽管阅读了API和其他SO问题已经很长时间了,但我并不知道如何解决它。
以下是我尝试的内容:
另一方面,我将空字符串传递给GetQA,因为如果我只使用data: {"GetQA"}
,编译器会抱怨 - 如何在没有参数的情况下调用函数?