如何从 html 表单中的下拉框元素中获取所选项目的文本?(使用python)当我使用鼠标从下拉框中选择一项时,如何将值存储到变量中?(即不使用提交按钮)
这是针对我在仅支持 Python 的应用程序引擎中执行的应用程序。
如何从 html 表单中的下拉框元素中获取所选项目的文本?(使用python)当我使用鼠标从下拉框中选择一项时,如何将值存储到变量中?(即不使用提交按钮)
这是针对我在仅支持 Python 的应用程序引擎中执行的应用程序。
您的问题显示了对Web 应用程序如何工作的一些误解。
用户必须在浏览器中输入地址才能访问应用程序。这向服务器发送请求。服务器代码(用 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 技术。在这种情况下,您必须在您的 python 应用程序中创建特殊视图并在 Javascript 中发起请求。
请记住,Javascript 用于客户端,Python 用于服务器端。
如果您需要将选定的值发送到您的服务器而不提交,我认为最好的(如果不是唯一的)方法是使用一些 ajax。
如果您使用的是 jQuery,请查看它的 ajax 内容。它是事件模型。您首先必须将下拉菜单的事件附加到您要执行的功能。因此,当用户更改下拉列表时,浏览器将在后台打开一个新连接。因此,您可以获得该值并将其保存在服务器端。会是…… 像这样:
$(document).ready(
$("#select_id").change(function() {
$(this).getJSON("/method", {"selectValue":$(this).val()}, function() {
alert("value received!");
});
});
);
希望能帮助到你!
使用 onchange 的问题在于并非所有用户都使用鼠标。如果您有一个组合框并使用键盘更改值,那么如果不提交表单,您将永远无法超过第一个值。
~西里克斯