2010-05-06 16 views
0

J'utilise la fonction de chargement JQuery pour charger une partie de ma page. Puis-je accéder aux variables de cette page dans la page qui le charge. par exemple.Le contenu de l'appel AJAX est ajouté à la variable de contexte Django

  • Page A utilise la fonction de charge JQuery pour charger B

  • page charges B et définit une variable dans le contexte appelé pageB_var qui détient un objet django

  • Page A peut alors accéder à cette variable par faire {{pageB_var}} depuis qu'il a été ajouté au contexte

Sinon, quelle est la meilleure façon de faire?

Merci

+0

. W h a t? –

+0

ha Je pensais que quelqu'un pourrait le dire. Je vais essayer et re-mot – John

+0

fondamentalement je veux utiliser les variables ajoutées au contexte dans la page B sur la page A. Où la page B est chargée à partir de la page A en utilisant la fonction de chargement JQuery. – John

Répondre

0

Il semble que vous utilisez une requête asynchrone pour mettre à jour une partie d'une page, en recevant une réponse HTML partielle et en remplaçant une partie du balisage de votre page par cette réponse.

Vous avez constaté que cela vous limite évidemment à la mise à jour des informations contenues dans cette page partielle. Envisagez plutôt de fournir une réponse JSON à votre requête asynchrone, contenant toutes les informations dont vous avez besoin, puis de mettre à jour le code HTML nécessaire dans n'importe quelle partie de la page en manipulant le côté client DOM, avec JavaScript. Pensez au JSON comme étant votre contexte dans ce but.

0

Une fois que la page A est envoyée au navigateur, il est surtout fixé dans la mémoire. Vous devez utiliser les fonctions DOM en JavaScript pour modifier ce qu'il affiche. Cela dit, vous pouvez renvoyer JSON de la vue pour l'appel à la page B, puis le décoder et l'insérer dans la page A.

1

Le contexte de rendu de Page B n'est pas pertinent et inaccessible au moment où vous obtenez la réponse de B.

Voici ce qui se passe: La page A est affichée sur le serveur. pendant ce temps, son contexte existe. quand le serveur a fini de le rendre, il envoie la page rendue au client. le navigateur web client exécute alors le javascript incluant votre jquery load() pour appeler à nouveau le serveur et lui dire de rendre B. à ce stade le processus qui a rendu la page A n'existe plus, donc pour la page B d'envoyer des trucs à la page Le rendu de A vous obligerait à faire voyager le temps ....

Pour ce faire, la page B doit renvoyer un objet JSON, puis utiliser la fonction de rappel (javascript) donnée à load() pour afficher les modifications à la page basée sur cette réponse JSON de B.