【问题标题】:Why can't I access session variables from my AJAX-called PHP script?为什么我不能从我的 AJAX 调用的 PHP 脚本中访问会话变量?
【发布时间】:2010-12-19 17:26:37
【问题描述】:

我有一个带有会话变量的 PHP 脚本,设置如下:

$_SESSION['VAR1'] = "test"

现在,我通过 jQuery 发起的 POST 请求使用 AJAX,所以我有一个名为 ajax.php 的脚本,它具有所有必需的功能。

当我尝试在 ajax.php 中访问我的会话变量 (echo $_SESSION['VAR1']) 时,它什么也没有产生。

会话在 AJAX 请求中不起作用吗?

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    在访问会话之前,您需要在访问会话的每个页面上执行此操作:

    session_start();
    

    这意味着在设置会话变量的页面和尝试检索它的 AJAX 页面上。两者都需要拨打session_start()

    只要 AJAX 请求调用同一域中的脚本(从而可以访问会话 cookie),就没有理由无法访问会话变量。一个 AJAX 请求毕竟只是另一个 HTTP 请求。

    【讨论】:

    • 我试过了,但我没有在该页面中获得任何会话变量。我在以前的页面上使用 joomla,所以可能会在页面 laods 时破坏会话 avriables
    • 在克莱图斯。我正在使用带有 jquery 的 ajax。 ajax cal 上不显示会话变量的值。但显示了其他数据。我在两个页面上都使用了 session_start()
    • @Parag 可能是因为 ajax 加载的内容在不同的域上或使用 http 而不是 https(反之亦然),如下面的一些答案所述
    【解决方案2】:

    确保两个页面的域名(即 AJAX 容器和 AJAX 脚本相同)。这是一个例子:

    http://mydomain.com/login.php           (set session variables here)
    http://mydomain.com/ajax-container.php  (session variables are visible here)
    http://mydomain.com/ajax-script.php     (session variables are visible here)
    http://www.mydomain.com/ajax-script.php (session variables are NOT visible here)
    

    另一个:

    http://www.mydomain.com/login.php          (set session variables here)
    http://www.mydomain.com/ajax-container.php (session variables are visible here)
    http://www.mydomain.com/ajax-script.php    (session variables are visible here)
    http://mydomain.com/ajax-script.php        (session variables are NOT visible here)
    

    【讨论】:

      【解决方案3】:

      我还发现自己在 "

      【讨论】:

        【解决方案4】:

        确保在调用 session_start() 之前没有回显任何内容(甚至没有空格)。
        为了安全起见,请将代码作为您用于页面的任何模板的第一个代码。如果内容已发送到浏览器,该功能将不起作用。
        要测试并查看问题出在哪里,请将页面作为独立页面调用,而不是通过 AJAX 调用,并确保在 AJAX 处理之前它可以正常工作。

        【讨论】:

          【解决方案5】:

          Salman A 所写内容的附录:

          如果您在 https:// 文件中设置会话变量并尝试使用 http:// 文件访问它,您将无法...

          https://www.example.com/index.php - call session_start() and set session variable
          http://ww.example.com/index_tmp.php - unable to access session variable
          

          反之亦然……

          http://www.example.com/index.php - call session_start() and set session variable
          https://ww.example.com/index_tmp.php - unable to access session variable
          

          而是:

          https://www.example.com/index.php - call session_start() and set session variable
          https://ww.example.com/index_tmp.php - Able to access session variable
          

          还有:

          http://www.example.com/index.php - call session_start() and set session variable
          http://ww.example.com/index_tmp.php - Able to access session variable
          

          【讨论】:

            【解决方案6】:

            我自己的错误是我的 ajax 文件中的 BOM 字符。我需要在名为 php 文件的 ajax 中使用会话变量。我尝试通过 session_start() 启动会话,但出现“无法修改标头信息”。我删除了 BOM 字符并且代码运行良好。

            【讨论】:

              【解决方案7】:

              在 jQuery 或 JavaScript 中,您可以像这样获取会话值:

              var StepIndexval = '<%= Session["StepIndex"].ToString() %>';
              
              alert(StepIndexval);
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多