JQuery / Ajax isset(MyFunction)总是返回false

时间:2017-06-09 09:59:56

标签: javascript php jquery ajax

我已经编写了一个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问题已经很长时间了,但我并不知道如何解决它。

以下是我尝试的内容:

  • deferred.done()
  • 将嵌套调用从GetQA移动到成功函数到 提交按钮的.mouseup()事件
  • 将函数从成功中移出并在调用comment-set.php
  • 后运行它

另一方面,我将空字符串传递给GetQA,因为如果我只使用data: {"GetQA"},编译器会抱怨 - 如何在没有参数的情况下调用函数?

0 个答案:

没有答案