我必须单击“开始”按钮两次才能使Ajax的成功响应功能正常工作。我希望它能一键工作。
这是一个游戏网站,一旦通过PHP Ajax单击游戏,该网站就会设置一个新的cookie,并且在设置cookie时,将发送成功数据并打开包含cookie数据的新窗口。
Javascript:
$(document).on('click', '#startPlay_btn', function(e)
{
e.preventDefault();
$.ajax(
{
type: 'post',
url: 'ajax.php',
data: {'csrf_token': $('#csrf_token').val(), 'flag': 1},
dataType: 'json',
success: function(data)
{
if(data.response==1)
window.open('play.php?gameID='+data.gameID, '_self');
}
});
});
ajax.php:
switch ($_POST['flag'])
{
case 1:
//generate game ID and CSRF
$c_value = $base->recursive_generator('b_gameID', 1, 'balances');
if( !isset($_COOKIE['gameID']) )
{
setcookie('gameID', $c_value, time() + (86400 * 30), "/");
$_COOKIE['gameID'] = $c_value;
$base->insert('balances', array('b_gameID'=>$c_value));
}
echo json_encode(array('response'=>1, 'gameID'=>$_COOKIE['gameID']));
break;
我希望在浏览器中设置Cookie后单击“开始”按钮后会打开新窗口,但是我必须单击两次按钮,第一次单击时:它将设置cookie,然后再次单击时,它将打开窗口。