2

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

所以,假设会话没有在用户从客户端进行调用的那一刻开始,如果我在服务器端有这个功能:

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

我得到一个错误。我无法追踪 chrome 或资源管理器中的错误,但在 Firefox 中,我在库的核心中得到了一个未捕获的对象异常。如果我在返回之前开始会话,它“有效”:

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

我说“有效”是因为它以部分方式起作用。在 Firefox 中,ajax 调用完美完成,但是在 chrome/ie 中我需要进行 2 次调用:第一次没有任何反应,而第二次则可以。

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

function startSession () {
     session_start();
}

然后,从客户端以这种方式进行两次调用:

xajax_startSession(); xajax_example();

通过这种方法,我解决了 chrome/ie 中“第一次执行”的问题,但是必须为每个 xajax 调用添加一个额外的调用是一个非常糟糕的主意:(

再次非常感谢您的帮助

4

2 回答 2

2

你可以做同样的动作

$response->alert('hello');

代替

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

祝你好运

于 2012-11-08T23:35:06.713 回答
1

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

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

两条线应该互换

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

至于您的实际问题,它似乎是在 ajax 调用期间创建会话(php-xajax)的重复

于 2012-10-16T14:15:28.683 回答