AJAX在脚本结束之前停止执行

时间:2015-08-28 00:03:08

标签: php ajax

我有一个AJAX类,它异步检查表单上的标记。

实际的功能是在检查后才能看到Token存在,它应该删除现有的令牌并创建另一个

这是PHP脚本:

if (Session::exists($tokenName) && $token === Session::get($tokenName)) {
        Session::delete($tokenName);
        return true;
    }

它将通过第一行,当它到达第二行时,它会删除令牌但不返回true。如果我注释掉Session::delete($tokenName);行,它将返回true。

如果我在return true;之前反转代码Session::delete($tokenName);,它将返回true但不删除会话。

有人可以帮助我解决问题所在。感谢。

已编辑:以下是Session类

中的方法
public static function delete($name)
    {
        if (self::exists($name)) {
            unset($_SESSION[$name]);
        }
    }

整个功能:

public static function check($token)
    {
        $tokenName = Config::get('session/token_name');

        if (Session::exists($tokenName) && $token === Session::get($tokenName)) {
        Session::delete($tokenName);
        return true;
        }

        return false;
    }

我的AJAX snippit:

var ajax = new AjaxRequest("POST", "php-script", params, function (responseText, responseStatus) {
    var response = JSON.parse(responseText);

});

这是收到AJAX帖子的PHP脚本:

if (Token::check('token')) {
    //The first snippet should run, delete the token and return true (That's where my problem comes from)
    //If it returns true after deleting the token, this script should continue but since it is not *i'm stuck*
}

1 个答案:

答案 0 :(得分:2)

您的PHP代码不存在任何问题。 但是如果你想将返回值/消息传递给ajax,那么你必须在php文件的末尾回显结果。 当您使用json格式的ajax echo返回值时: echo“{'status':1}”; 然后在ajax中使用您的响应变量: response.status