2010-11-23 5 views
1

Ich habe ein ExtJS Raster mit den folgenden:Nicht zu sehen, ExtJS Grid Zustand Cookie während Ajax-Request

// Initialisieren der Zustandsmanager

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

// den Staat id Set

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

Ich konnte den Cookie auf eine normale HTTP-Anfrage bekommen. Wenn ich versuche, eine jQuery Ajax-Anfrage zu senden, obwohl ich die Cookie-Server-Seite nicht sehe. Alles, was ich sehe, ist jsessionid.

Was fehlt mir.

Ich kann den ganzen Code einfügen, wenn nötig, aber ich habe mich nur gefragt, ob ich etwas Grundlegendes darüber vermisse, wie das alles funktioniert.

Danke, Ian

PS - Am hinteren Ende ich diesen Code (Grails Controller) haben:

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

ich nur JSESSIONID gedruckt werden.

Antwort

0

Sieht aus wie ich es herausgefunden habe.

Ich habe törichterweise nicht erkannt, dass der Cookie erst gesetzt wird, nachdem bestimmte Ereignisse im Grid ausgelöst wurden und nicht bei der Initialisierung, hat nichts mit einer regulären Anfrage gegen eine Ajax-Anfrage zu tun.

Danke für Sie trotzdem Hilfe McStretch.

+0

Kein Problem, ich bin froh, dass Sie die Lösung gefunden haben. Gehen Sie voran und markieren Sie Ihre Lösung als akzeptiert, damit die Frage effektiv geschlossen wird. – McStretch

0

Sie möchten eine Ajax-Anfrage mit ExtJS senden, nicht über jQuery. jQuery hat keine inhärente Idee von den Stateful Variablen/Objekten von ExtJS (es sind zwei verschiedene Javascript Bibliotheken), so dass das Cookie nicht so behandelt wird, wie Sie es erwarten. Ich gehe davon aus, dass die normale HTTP-Anfrage, die Sie erwähnen, von ExtJS gehandhabt wurde, weshalb Sie das erwartete Cookie-Verhalten gesehen haben.

Hier ist ein Beispiel dafür, wie eine Ajax-Anfrage mit ExtJS Feuer:

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

Weitere Informationen finden Sie im API Documentation finden.

+0

Danke für Ihre Antwort, aber wenn ich eine reguläre HTTP-Anfrage meinte, meinte ich, ein Formular normal einzureichen und die Seite zu aktualisieren (nicht AJAX). Ich sehe also nicht, warum es wichtig wäre, ob ich ExtJS für den AJAX-Aufruf oder jQuery verwende. Der Cookie sollte auf dem Client-System erstellt und gespeichert werden, oder? – Ian

+0

Machst du ein Formular über ExtJS oder HTML? Haben Sie versucht, die AJAX-Anfrage von ExtJS zu nutzen? – McStretch

+0

Ursprünglich habe ich ein Formular über HTML gesendet. Ich wollte die Form AJAX machen, also begann ich mit jQuery. Ich habe nicht versucht, ExtJS zu verwenden. Jetzt, wenn ich das Formular abschicke, werde ich für den Cookie-Namen JSESSIONID zurückgegeben. – Ian