我有一个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*
}
答案 0 :(得分:2)
您的PHP代码不存在任何问题。 但是如果你想将返回值/消息传递给ajax,那么你必须在php文件的末尾回显结果。 当您使用json格式的ajax echo返回值时: echo“{'status':1}”; 然后在ajax中使用您的响应变量: response.status