在xajax调用后启动会话

时间:2012-10-16 14:08:51

标签: php xajax

我在使用xajax发出ajax请求时遇到问题。问题是我不想在服务器上启动会话,除非它是完全必要的。对于xajax调用,如果没有会话存在,则无法发送响应,因此我不得不启动它。

因此,假设用户从客户端进行呼叫时会话未启动,如果我在服务器端具有此功能:

function example() {
    $response = new XajaxResponse();
    $response->script("alert('hello')");
    return $response;
}

我收到错误。我无法跟踪chrome或explorer中的错误,但在firefox中,我在库的核心中获得了一个未被捕获的对象异常。如果我在返回之前启动会话,它“有效”:

function example() {
    session_start();
    $response = new XajaxResponse();  
    $response->script("alert('hello')");
    return $response;
}

我说“有效”,因为它以局部方式运作。在firefox中,ajax调用完全通过,然而在chrome /即我需要进行2次调用:第一次没有任何反应,而第二次没问题。

我现在能想到的唯一解决方案是非常脏的。应该创建一个xajax函数来启动会话:

function startSession () {
     session_start();
}

然后,从客户端以这种方式拨打两个电话:

xajax_startSession(); xajax_example();

通过这种方法,我解决了chrome中的“首次执行”问题,但是对于每个xajax调用都需要添加一个额外的调用是一个非常糟糕的主意:(

再次感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您可以使用

执行相同的操作
$response->alert('hello');

而不是

$response->script("alert('hello')");
祝你好运

答案 1 :(得分:1)

您的代码是错误的,除非您只是动态编写

function example() {
    session_start();  
    $response->script("alert('hello')");
    $response = new XajaxResponse();
    return $response;
}

应切换两行

    $response->script("alert('hello')");
    $response = new XajaxResponse();

至于你的实际问题,它似乎是Create the session during ajax call (php-xajax)

的重复