使用AJAX设置会话的值不起作用

时间:2016-04-21 作者:JessengBijleng

我对使用Ajax有点陌生,但我正在尝试使用Ajax更新会话的价值。当单击按钮时,Ajax调用应该触发。

当我点击这个按钮时,它也会返回succes函数。我正在使用Wordpress进行这个Ajax调用。

目前这是我的代码:

Ajax调用:

$(\'.button\').click(function(){
    $.ajax({
                type: "POST", 
                url: "/wp-admin/admin-ajax.php", 
                data: {click: "true"},
                success: function() { 
                    alert(\'bro it worked!\'); 
                }
            }); 
}); 
功能。Wordpress中的php:

session_start();

    function notificationCall() { 
      $_SESSION[\'clicked\'] = $_POST[\'click\']; 
      die(); 
    }

    add_action(\'wp_ajax_notificationCall\', \'notificationCall\');
    add_action(\'wp_ajax_nopriv_notificationCall\', \'notificationCall\');

    echo $_SESSION[\'clicked\']; 
因此,我的Ajax调用返回一个succes函数,其中包含一个字符串“Bro it worked”。但是,我的会话始终保持相同的默认值“false”。

有什么想法吗?

1 个回复
SO网友:Shameem Ali

对我来说,使用ajax的会话使用以下代码段

add_action(\'init\', \'start_session\', 1);
function start_session(){
    if(!session_id()) {
    session_start();
    }
}

// form submition 
add_action( \'wp_ajax_nopriv_form_response\', \'form_response\' );
add_action( \'wp_ajax_form_response\', \'form_response\' );

function form_response() {
   $_SESSION[\'value\'] = $_POST[\'formFiled\'];
}

 //Session value
if(isset($_SESSION[\'value\'] ))
{
    echo $_SESSION[\'value\'];
}