如何从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