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