2010-11-23 18 views
1

J'ai une grille ExtJS ce qui suit:Ne pas voir cookie état de la grille ExtJS lors de la demande ajax

// Initialiser le directeur de l'État

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

// Définissez l'identifiant de l'état

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

J'ai été en mesure d'obtenir le cookie sur une requête HTTP normale. Lorsque j'essaie d'envoyer une requête ajax jQuery bien que je ne vois pas le cookie côté serveur. Tout ce que je vois est jsessionid.

Qu'est-ce qui me manque?

Je peux coller l'intégralité du code si nécessaire, mais je me demandais simplement s'il me manquait quelque chose de fondamental sur la façon dont tout cela fonctionne.

Merci, Ian

PS - Sur l'arrière, j'ai ce code (contrôleur Grails):

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

Je ne reçois que JSESSIONID imprimés.

Répondre

0

On dirait que je l'ai compris. Je n'ai pas réalisé que le cookie n'est défini qu'après le déclenchement de certains événements sur la grille et non lors de l'initialisation, cela n'a rien à voir avec une requête régulière par rapport à une requête ajax.

Merci pour votre aide de toute façon McStretch.

+0

Pas de problème, je suis content que vous ayez trouvé la solution. Allez-y et marquez votre solution comme la solution acceptée afin que la question soit effectivement close. – McStretch

0

Vous souhaitez envoyer une requête ajax avec ExtJS, pas via jQuery. jQuery n'a aucune idée des variables/objets stateful d'ExtJS (il s'agit de deux bibliothèques javascript différentes), de sorte que le cookie ne serait pas géré comme vous le souhaitez. Je suppose que la requête HTTP normale dont vous parlez a été traitée par ExtJS, ce qui explique pourquoi vous avez vu le comportement attendu des cookies.

Voici un exemple de la façon de tirer une demande ajax avec ExtJS:

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

Plus d'informations peuvent être trouvées dans le API Documentation.

+0

Merci pour votre réponse, mais quand je voulais dire une requête HTTP régulière, je voulais dire soumettre un formulaire normalement et rafraîchir la page (pas AJAX). Donc je ne vois pas pourquoi cela aurait de l'importance si j'utilise ExtJS pour faire l'appel AJAX ou jQuery. Le cookie doit être créé et stocké sur le système client non? – Ian

+0

Faites-vous un formulaire de soumission via ExtJS ou html? Avez-vous essayé d'utiliser la requête ajax d'ExtJS? – McStretch

+0

A l'origine je faisais un formulaire de soumission via html. Je voulais faire le formulaire AJAX, j'ai donc commencé à utiliser jQuery. Je n'ai pas essayé d'utiliser ExtJS. Maintenant, lorsque je soumets le formulaire, tout ce que je reçois pour le nom de cookie est JSESSIONID. – Ian

Questions connexes