L'obtention de la valeur sélectionnée de la liste déroulante dans un formulaire html, sans soumettre
Comment obtenir le texte de l'élément sélectionné dans une liste déroulante élément dans les formulaires html? (à l'aide de python)
Comment puis-je stocker la valeur d'une variable, lorsque je sélectionne un élément dans la liste déroulante à l'aide de la souris? (ie. sans l'aide d'un bouton de type submit)
C'est pour une application que je fais dans app engine qui ne supporte Python.
InformationsquelleAutor Tom | 2009-01-07
Vous devez vous connecter pour publier un commentaire.
Votre question montre une incompréhension sur la façon les applications web travail.
L'utilisateur doit saisir une adresse dans un navigateur pour se rendre à l'application. Qui envoie une requête au serveur. Le code du serveur (écrit en python) reçoit cette demande et a la possibilité d'envoyer une réponse. La réponse est un document écrit dans HTML. Certaines parties de ce document peut être dynamique, c'est à dire générées par le code python. D'autres parties de ce document ne peut être statique. Le navigateur affiche le document sur la fenêtre de l'utilisateur.
Après cela, le seul moyen de votre code python peut savoir à propos de quelque chose qui se passe sur la fenêtre du navigateur, ou à exécuter n'importe quel partie du code python, est de rendre le navigateur envoyer une autre demande.
Qui peuvent se produire dans de nombreuses situations, les plus courants étant:
url, faire envoyer un autre navigateur
demande de cette nouvelle url.
submit
boutonnavigateur soumettre le formulaire de demande
à l'adresse configurée dans le
formulaire de
action
attribut.Le dernier est ce que vous voulez. Vous devez écrire dans javascript un peu de code pour rendre le navigateur d'envoyer l'information choisie dans la liste déroulante pour le serveur. De cette façon, votre code python sur le serveur peut faire quelque chose à ce sujet.
La manière la plus simple de le faire est par la mise à
onchange
événement de la liste déroulante, faire un submit:De cette façon, lorsque l'utilisateur modifie la valeur de la liste déroulante, le formulaire sera soumis, comme si l'utilisateur a cliqué sur "soumettre". Le code Python sur le serveur s'exécute. Le navigateur va charger la réponse.
Une autre façon serait d'utiliser du javascript XmlHTTPRequest API DOM pour envoyer la requête. De cette façon, vous pouvez recevoir la valeur en python et envoyer une réponse, qui sera reçue par le code javascript dans le navigateur. Ce code peut changer des parties de la page en fonction de la réponse, sans changer la totalité de la page. Cette technique est appelée AJAX.
Si vous prévoyez d'écrire beaucoup de code javascript, je suggère fortement à l'aide d'une bibliothèque javascript au moins de soulager la douleur de composer avec de nombreuses versions de navigateur. jQuery est ma bibliothèque de son choix.
En d'autres termes, le code écrit en javascript s'exécutant dans le navigateur parle le code écrit en python s'exécutant sur le serveur.
Votre code python s'exécute sur le serveur (google appengine). Formulaire HTML s'exécute sur le client (dans le navigateur). Le client et le serveur communiquent via le protocole HTTP. Le client envoie demandes, et le serveur répond avec réponses. Vous devez envoyer quelque chose pour le serveur, pour permettre à votre code python savoir sur les actions de l'utilisateur.
Sur le côté client, vous pouvez utiliser Javascript (pensez à utiliser la bibliothèque de jQuery). Probablement, vous pouvez sortir sans communiquer au serveur.
Si vous avez à communiquer avec le serveur mais ne veux pas recharger la page, utilisez la AJAX technique. Dans ce cas, vous devez créer des vues spéciales dans votre application python et initier des demandes en Javascript.
Rappelez-vous, le Javascript est pour le côté client, le Python est pour le côté serveur.
Si vous avez besoin d'envoyer la valeur sélectionnée à votre serveur sans l'envoi, je pense que les meilleurs (si pas le seul), l'approche serait d'utiliser ajax.
Si vous utilisez jQuery, jetez un oeil à c'est ajax choses. et c'est Les événements de modèle. Vous devez d'abord fixer la liste déroulante de l'événement à la fonction que vous souhaitez exécuter. Ainsi, lorsque l'utilisateur modifie la liste déroulante, puis le navigateur ouvre une nouvelle connexion en coulisses. Alors la, vous pouvez obtenir la valeur et de l'enregistrer sur le serveur. Serait qqch. comme ceci:
Espère que cela aide!
Le problème avec onchange est que pas tous les utilisateurs à l'aide d'une souris. Si vous avez une zone de liste déroulante et modifier la valeur avec le clavier, vous ne seriez jamais capable d'obtenir au-delà de la première valeur sans le formulaire de soumission.
~Cyrix