我有一个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。
答案 0 :(得分:0)
您希望使用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找到更多信息。
答案 1 :(得分:0)
看起来我想通了。
我愚蠢地没有意识到cookie仅在网格上的某些事件被触发后才设置,而不是在初始化时设置,与常规请求与ajax请求无关。
感谢你帮助McStretch。