【问题标题】:Not seeing ExtJS grid state cookie during ajax request在 ajax 请求期间没有看到 ExtJS 网格状态 cookie
【发布时间】:2010-11-24 12:46:05
【问题描述】:

我有一个带有以下内容的 ExtJS 网格:

//初始化状态管理器

Ext.state.Manager.setProvider(new Ext.state.CookieProvider());

// 设置状态id

stateful:true,    
stateId:'Vehicle-grid', 

我能够通过正常的 HTTP 请求获取 cookie。 当我尝试发送 jQuery ajax 请求时,虽然我没有看到 cookie 服务器端。 我看到的只是 jsessionid。

我错过了什么。

如有必要,我可以粘贴整个代码,但我只是想知道我是否遗漏了有关这一切如何工作的基本知识。

谢谢, 伊恩

PS - 在后端我有这个代码(grails 控制器):

def allCookies = request.cookies;
for (c in allCookies) {
    println "\n"+c.name+"\n";
}

我只打印了 JSESSIONID。

【问题讨论】:

    标签: jquery ajax cookies extjs


    【解决方案1】:

    你想用 ExtJS 发送一个 ajax 请求,而不是通过 jQuery。 jQuery 本身不知道 ExtJS 的有状态变量/对象(它们是两个不同的 javascript 库),因此不会按照您期望的方式处理 cookie。我假设您提到的正常 HTTP 请求是由 ExtJS 处理的,这就是您看到预期 cookie 行为的原因。

    这是一个如何使用 ExtJS 触发 ajax 请求的示例:

    // Basic request
    Ext.Ajax.request({
       url: 'foo.php',
       success: someFn,
       failure: otherFn,
       headers: {
           'my-header': 'foo'
       },
       params: { foo: 'bar' }
    });
    

    更多信息可以在API Documentation找到。

    【讨论】:

    • 感谢您的回复,但当我指的是常规 HTTP 请求时,我的意思是正常提交​​表单并刷新页面(不是 AJAX)。所以我不明白为什么使用 ExtJS 进行 AJAX 调用或 jQuery 会很重要。 cookie 应该被创建并存储在客户端系统上吧?
    • 您是通过 ExtJS 还是 html 提交表单?你尝试过使用 ExtJS 的 ajax 请求吗?
    • 最初我是通过html提交表单。我想制作 AJAX 表单,所以我开始使用 jQuery。我没有尝试过使用 ExtJS。现在,当我提交表单时,我返回的所有 cookie 名称都是 JSESSIONID。
    【解决方案2】:

    看来我想通了。

    我愚蠢地没有意识到 cookie 仅在触发网格上的某些事件后才设置,而不是在初始化时设置,与常规请求与 ajax 请求无关。

    无论如何感谢你的帮助 McStretch。

    【讨论】:

    • 没问题,很高兴您找到了解决方案。继续并将您的解决方案标记为已接受的解决方案,以便问题有效地结束。
    猜你喜欢
    • 2015-08-06
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2011-11-01
    • 2016-08-09
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多