我在使用 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 调用添加一个额外的调用是一个非常糟糕的主意:(
再次非常感谢您的帮助