由AJAX执行的php函数内的$_SESSION

时间:2018-11-12 作者:Tahi Reu

我正在定义$_SESSION[\'session_test\'] 从…起$_POST[\'reason\'] 我从AJAX电话中得到消息。

在该功能内部,$_SESSION[\'session_test\'] 是否得到定义,我是否得到期望echo 后果

add_action(\'wp_ajax_return_reason\', array( __CLASS__ , \'select_return_reason\'));
static function select_return_reason() {

        $_SESSION[\'session_test\'] = $_POST[\'reason\'];
        echo "REASON: " . $_SESSION[\'session_test\'];
        echo "<br>";

        wp_die();
    }
但是,当我刷新页面并尝试回显时$_SESSION[\'session_test\'] 在下面的其他函数中,它是空的-我得到NULL。

add_action(\'woocommerce_after_cart_table\', array( __CLASS__ , \'display_returned_items\'));
static function display_returned_items() {
        echo "Testing: " .  $_SESSION[\'session_test\'];
    }
为什么$_SESSION[\'session_test\'] 值仅在由AJAX执行的函数中可用/定义?

我的session_start(); 位于php文件的顶部,位于<?php 打开标签。

如果我需要提供更多信息,请告诉我。谢谢

1 个回复
最合适的回答,由SO网友:Tahi Reu 整理而成

将此行包装在内if 解决问题的声明:

if(!isset($_SESSION[\'session_test\'])) {
    $_SESSION[\'session_test\'] = $_POST[\'reason\'];
}
我想select_return_reason(){...} 保存此行的函数仅由AJAX执行,而不是在每次页面加载时执行。

结束

相关推荐

插件中的AJAX:返回整个页面

我正在为客户端开发一个小插件,我的ajax调用返回整个页面json response. 我找不到窃听器。在插件中main.php:function __construct(){ //.. $this->PluginSetup(); } function PluginSetup(){ //.. add_action( \'wp_ajax_the_sag_form\', array( $this , \'the_sag_form\