Session and jQuery


Session and jQuery

我正在构建一个由domain.com上的主前端组成的网站(它还没有投入生产,所以希望不需要具体细节)。在client.domain.com 上有一个客户计费网站

账单系统是编码的——我对它几乎没有控制权,但有一个很好的API。

我正试图通过jQuery从客户端区域获取一些信息,以便在前端显示。令人困惑的是,这在两天前才起作用,现在已经停止了。

我用来获取所需内容的jquery很简单:

     $(document).ready(function(){
        $.get("client/logincheck.php", function(data){
           $('#dynamicsidebar').append(data);
        });
     });

现在,我调用的页面(logincheck.php)位于站点的客户端区域。就目录结构而言,它位于前端的webroot下——在客户端/目录中,因此我可以用相对路径来调用它。

目前,出于调试目的,我只是将所需的账单信息文件(我已成功登录)包括在内。然后,我打印$_SESSION数组的输出,该数组由计费系统(编码代码)填充,然后退出:

客户端/logincheck.php 代码

    require("dbconnect.php");
    require("includes/functions.php");
    require("includes/clientareafunctions.php");
    print_r($_SESSION);
    die();

如果我直接在浏览器(client.domain.com/logincheck.php)中浏览到该URL,我会得到以下输出:

    Array ( [calinkupdatecc] => 0 [calinkupdatesq] => 0 [uid] => 1 [upw] => a49de38fe12d325feb11bc9be1762482 [cainvorderby] => status [cainvsort] => DESC [cadomorderby] => domain [cadomsort] => ASC [caemailsorderby] => date [caemailssort] => DESC [caprodorderby] => product [caprodsort] => ASC ) 

这正是我所期望的。

然而,从前端来看,div只附加了一个空数组:

    Array()

如果jQuery正在工作,它应该(无论如何,目前)是SESSION数组,不是吗?

如果这是相关的,我的php.ini文件中有session.cokie_domain-.domain.com设置。

谢谢你的帮助。

**编辑**

我将client/logincheck.php中的代码替换为:

    if ($_SESSION['uid']) {
        echo "Logged In";
    } else {
       echo "Not logged in";
   }
   die();

现在奇怪的是,我直接浏览到页面,然后在屏幕上得到"登录"输出。在前端,我得到了"未登录"的回响。

那么,直接访问URL如何显示有效会话,而使用GET检索页面却显示其他内容呢?

我不知道"正确"的答案,但我会从尝试这个开始:

  1. 打开webkit浏览器(Chrome、Safari等)
  2. 打开开发人员工具,这样您就可以捕获AJAX请求(在"网络"选项卡下)
  3. 查看"请求标头"
  4. 查看"响应"

我建议查看请求标头,因为$.get方法试图智能地猜测返回的数据类型,除非您填写该参数[1]。我不100%确定这可能与此有关,但如果它认为它正在返回一种不同的数据类型,那么幕后可能会发生一些奇怪的事情。

我还建议查看实际的响应标头,这样您就可以看到实际返回的是什么。我在后台做了类似的事情,我得到了一个对象数组,所以当我附加响应时,它会输出Array

正如我所说,这只是一个起点,我需要查看代码来更好地帮助您。

[1] jQuery$.get文档:http://api.jquery.com/jQuery.get/