如何從html窗體中的下拉框元素中獲取選定項目的文本? (using python) 當我使用鼠標從下拉框中選擇一個項目時,如何將值存儲到變量中? (即不使用提交按鈕)從HTML窗體中的下拉框中獲取選定的值而不提交
這是一個應用程序,我在應用程序引擎中只支持Python。
如何從html窗體中的下拉框元素中獲取選定項目的文本? (using python) 當我使用鼠標從下拉框中選擇一個項目時,如何將值存儲到變量中? (即不使用提交按鈕)從HTML窗體中的下拉框中獲取選定的值而不提交
這是一個應用程序,我在應用程序引擎中只支持Python。
您的問題顯示對web applications如何工作有些誤解。
用戶必須在瀏覽器中鍵入地址才能進入應用程序。這發送一個請求到服務器。服務器代碼(用python編寫)收到此請求並有機會發送答案。答案是通常用HTML寫成的文件。該文檔的某些部分可以是動態的,即由Python代碼生成。文檔的其他部分可以是靜態的。瀏覽器然後在用戶窗口上呈現文檔。
之後,您的python代碼可以知道瀏覽器窗口中發生的事情或運行python代碼的任何部分的唯一方法是讓瀏覽器發送另一個請求。
,可以在許多情況下發生,最常見的是:
submit
,使得瀏覽器 提交表單作爲請求 在 形式的action
屬性配置的地址。後者是你想要的。您必須在javascript中寫入一些代碼,以使瀏覽器將下拉選擇的信息發送到服務器。這樣你的服務器上的python代碼就可以做到這一點。
簡單的方式做到這一點是通過使onchange
事件降下來做一個提交:
<select name='myfield' onchange='this.form.submit()'>
<option .... >
...
</select>
</form>
這樣一來,當用戶改變的下拉值,表單將所需提交的如果用戶點擊提交。服務器上的Python代碼將運行。瀏覽器將加載答案。
另一種流行的方式是使用javascript的XmlHTTPRequest DOM API發送請求。這樣你就可以接收到python的值併發送一個答案,而這個答案又將被瀏覽器中的javascript代碼接收。該代碼可以根據答案更改頁面的某些部分,而無需更改整個頁面。這種技術被稱爲AJAX。
如果您打算編寫大量的javascript代碼,我強烈建議使用JavaScript庫至少緩解處理許多瀏覽器版本的痛苦。 jQuery是我選擇的圖書館。
換句話說,用JavaScript編寫的代碼在瀏覽器中運行會談以python編寫的代碼在服務器上運行。
您的python代碼在服務器上運行(google appengine)。 HTML表單在客戶端上運行(在瀏覽器中)。客戶端和服務器通過HTTP協議進行通信。客戶端發送請求,服務器響應響應。你必須發送一些東西給服務器,讓你的Python代碼知道用戶的行爲。
在客戶端可以使用Javascript(考慮使用jQuery庫)。也許你可以離開而不與服務器通信。
如果您必須與服務器通信,但不想重新加載頁面,請使用AJAX technique。在這種情況下,您必須在您的python應用程序中創建特殊視圖,並使用Javascript啓動請求。
請記住,Javascript是用於客戶端,Python用於服務器端。
非常感謝您的快速響應! – Tom 2009-01-08 05:19:34
如果您需要將選定的值發送到您的服務器而無需提交,我認爲最好的(如果不是唯一的)aproach將使用一些ajax。
如果您使用的是jQuery,請查看it's ajax stuff.以及它的Events model。您首先必須將下拉的事件附加到您要執行的功能。所以,當用戶改變下拉菜單時,瀏覽器會在幕後打開一個新的連接。所以,你可以得到這個值並將它保存在服務器端。會是的。像這樣:
$(document).ready(
$("#select_id").change(function() {
$(this).getJSON("/method", {"selectValue":$(this).val()}, function() {
alert("value received!");
});
});
);
希望它有幫助!
非常感謝您的快速回復! – Tom 2009-01-08 05:20:10
使用onchange的問題是並非所有用戶都在使用鼠標。如果你有一個組合框,並用鍵盤改變了這個值,你將永遠無法在沒有提交表單的情況下超過第一個值。
〜Cyrix
非常感謝!有效。 並特別感謝您的額外信息。 我是新手.... – Tom 2009-01-08 05:21:25