1

HTMLフォームのドロップダウンボックス要素から選択したアイテムのテキストを取得する方法は? (Python を使用) マウスを使用してドロップダウン ボックスから 1 つの項目を選択したときに、値を変数に格納するにはどうすればよいですか? (つまり、送信ボタンを使用せずに)

これは、Python のみをサポートするアプリ エンジンで実行しているアプリケーション用です。

4

4 に答える 4

19

あなたの質問は、 Web アプリケーションがどのように機能するかについての誤解を示しています。

ユーザーは、アプリケーションにアクセスするためにブラウザーにアドレスを入力する必要があります。これにより、サーバーにリクエストが送信されます。サーバー コード (Python で記述) はこの要求を受け取り、応答を送信する機会があります。答えは、通常はHTMLで書かれたドキュメントです。このドキュメントの一部は動的、つまり python コードによって生成される場合があります。ドキュメントの他の部分は静的にすることができます。次に、ブラウザはドキュメントをユーザー ウィンドウに表示します。

その後、Python コードがブラウザー ウィンドウで発生したことを認識したり、Python コードの任意の部分を実行したりする唯一の方法は、ブラウザーに別の要求を送信させることです。

これは多くの状況で発生する可能性があり、最も一般的な状況は次のとおりです。

  • ユーザーが別の URL へのリンクをクリックすると、ブラウザはこの新しい URL に別のリクエストを送信します。
  • ユーザーがsubmitボタンをクリックすると、ブラウザーは、フォームのaction属性で構成されたアドレスへのリクエストとしてフォームを送信します。
  • 通常はECMAscript ( javascriptとも呼ばれます)で記述された実際のページの一部のコードは、内部で要求を行います。

後者はあなたが望むものです。ドロップダウンで選択した情報をブラウザがサーバーに送信するように、 javascriptでコードを記述する必要があります。そうすれば、サーバー上の Python コードで何かを行うことができます。

これを行う簡単な方法onchangeは、ドロップダウンのイベントを送信することです。

<select name='myfield' onchange='this.form.submit()'>
<option .... >
...
</select>
</form>

そうすれば、ユーザーがドロップダウンの値を変更すると、ユーザーが送信をクリックしたかのようにフォームが送信されます。サーバー上の Python コードが実行されます。ブラウザーが回答を読み込みます。

もう 1 つの一般的な方法は、javascript のXmlHTTPRequest DOM API を使用してリクエストを送信することです。そうすれば、Python で値を受け取り、応答を送信できます。応答は、ブラウザーの JavaScript コードによって受信されます。そのコードは、ページ全体を変更することなく、回答に基づいてページの一部を変更できます。この手法はAJAXと呼ばれます。

大量の JavaScript コードを作成する予定がある場合は、少なくとも JavaScript ライブラリを使用して、多くのブラウザー バージョンを処理する手間を軽減することを強くお勧めします。jQueryは私が選んだライブラリです。

つまり、ブラウザで実行されている JavaScript で記述されたコードは、サーバーで実行されている Python で記述されたコードと対話します。

于 2009-01-07T11:43:06.200 に答える
0

onchange を使用する際の問題は、すべてのユーザーがマウスを使用しているわけではないということです。コンボボックスがあり、キーボードで値を変更した場合、フォームを送信しないと最初の値を超えることはできません。

〜キュリクス

于 2011-09-02T14:14:07.910 に答える