2012-06-15 2 views
2

J'ai donc un fichier .js que 2 pages jsp différentes appellent.Sauvegarde des données en javascript

fichier .js contient:

var savedObj; 

function A(obj){ savedObj = obj); 

function B(){ alert(savedObj); 

fonction X.jsp appels de fichiers Un tel qu'un élément DOM onchange = functionA(this);

fichier Y.jsp fonction appelle B tel que le corps onload = function B

Pour une raison quelconque, mon débogage fonction A montre que l'affectation de savedObj = obj a fonctionné correctement, mais dans function B, savedObj imprimé nul.

Merci les gars

+0

Si j'obtiens votre bonne question, la fonction B est appelée avant la 'fonction A' et puisque' savedObj' n'a de valeur que lorsque vous appelez 'function A', son alerte' null' sur 'onload' du corps – Jashwant

+0

@WilliamVanRensselaer, je devine qu'il interprète mal le résultat – Jashwant

+0

non, la fonction B est appelée après une soumission de formulaire – bouncingHippo

Répondre

0

L'utilisation d'un cookie pour stocker les La valeur est certainement le meilleur moyen de conserver la valeur sur plusieurs pages. Si vous ne voulez pas entrer dans les cookies, vous pouvez utiliser javascript pour écrire la nouvelle page à la place de la page actuelle et conserver la valeur, mais c'est en désordre et il vaut mieux prendre le temps d'apprendre les cookies.

2

Ce qui se passe parce que votre fonction B est appelée lorsque le corps de la JSP a terminé le chargement. Cela se produira avant tout événement de changement sur un élément DOM spécifique.

Si vous avez besoin fonction B d'avoir la mise à jour savedObj, vous devrez attendre l'appeler qu'après l'événement de changement est tiré sur votre élément DOM.

Note: cela suppose que vos pages JSP sont incluses dans le même rendu page, si elles ne sont pas, ce qui se passe parce que l'état JavaScript n'est pas persisté d'une page à

+0

oui il semble qu'ils ne persistent pas ... y at-il une solution de contournement? ou je dois refactoriser grand temps? – bouncingHippo

+2

Pour persister de la page à la page côté client, stockez la valeur dans un cookie. –

+0

+1 pour la note. les variables ne persistent pas sur les pages – CaffGeek

Questions connexes