我在使用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;
}
我说“有效”是因为它部分地起作用。在火狐中,ajax调用进行得非常完美,但是在/ie中,我需要进行2个调用--:第一次什么都没发生,第二次还好。
我现在唯一能想到的解决办法是一个非常肮脏的解决方案。应该创建一个xajax函数来启动会话:
function startSession () {
session_start();
}
然后,从客户端以这种方式进行两次调用:
xajax_startSession(); xajax_example();
使用这种方法,我解决了chrome/ie中的“第一次执行”问题,但是必须在每个xajax调用中添加一个额外的调用是一个非常糟糕的想法:(
再次感谢你的帮助
发布于 2012-11-08 23:35:06
你也可以做同样的动作
$response->alert('hello');
而不是
$response->script("alert('hello')");
祝好运
发布于 2012-10-16 14:15:28
你的代码是错误的,除非你只是临时写的。
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)的重复
https://stackoverflow.com/questions/12916541
复制相似问题