首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在xajax调用之后启动会话

在xajax调用之后启动会话
EN

Stack Overflow用户
提问于 2012-10-16 14:08:50
回答 2查看 713关注 0票数 2

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

因此,假设会话在用户从客户端调用时未启动,如果服务器端有此功能:

代码语言:javascript
运行
复制
function example() {
    $response = new XajaxResponse();
    $response->script("alert('hello')");
    return $response;
}

我犯了个错误。我无法在chrome或explorer中跟踪错误,但是在firefox中,我在库的核心中得到了一个未被察觉的对象异常。如果我在返回之前开始会话,它将“工作”:

代码语言:javascript
运行
复制
function example() {
    session_start();
    $response = new XajaxResponse();  
    $response->script("alert('hello')");
    return $response;
}

我说“有效”是因为它部分地起作用。在火狐中,ajax调用进行得非常完美,但是在/ie中,我需要进行2个调用--:第一次什么都没发生,第二次还好。

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

代码语言:javascript
运行
复制
function startSession () {
     session_start();
}

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

代码语言:javascript
运行
复制
xajax_startSession(); xajax_example();

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

再次感谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2012-11-08 23:35:06

你也可以做同样的动作

代码语言:javascript
运行
复制
$response->alert('hello');

而不是

代码语言:javascript
运行
复制
$response->script("alert('hello')");

祝好运

票数 2
EN

Stack Overflow用户

发布于 2012-10-16 14:15:28

你的代码是错误的,除非你只是临时写的。

代码语言:javascript
运行
复制
function example() {
    session_start();  
    $response->script("alert('hello')");
    $response = new XajaxResponse();
    return $response;
}

这两条线路应该换。

代码语言:javascript
运行
复制
    $response->script("alert('hello')");
    $response = new XajaxResponse();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12916541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档