【发布时间】:2010-10-27 02:38:24
【问题描述】:
我发现SO将搜索输入放在表单标签中,我发现其他一些网站也这样做,例如谷歌,他们将搜索输入和搜索按钮放在这个里面:
<form action="/search" method="get" name="gs" id="tsf">
我只想知道这样做的好处,因为它似乎很常见,我很想念它。
【问题讨论】:
-
我不知道为什么这个问题被否决了......这可能很简单,但它与编程相关且合法。
我发现SO将搜索输入放在表单标签中,我发现其他一些网站也这样做,例如谷歌,他们将搜索输入和搜索按钮放在这个里面:
<form action="/search" method="get" name="gs" id="tsf">
我只想知道这样做的好处,因为它似乎很常见,我很想念它。
【问题讨论】:
您会如何将搜索词传输到服务器?在表单标签内输入的原因是浏览器可以将值 POST 到服务器进行处理。
编辑:为了更好地理解,我建议您阅读HTML Forms and Input。
【讨论】:
<form> 元素的action 属性告诉浏览器服务器上的哪个 URL 负责处理表单。
【讨论】:
搜索输入只是一个通用文本框,从页面获取信息(您正在搜索的内容)到服务器的唯一方法是通过表单发送。
www.w3schools.com 和其他网站有一些关于构建表单的很棒的教程。
理论上,您可以使用 JavaScript 提交信息而无需明确输入表单,但如果客户端禁用了 JavaScript,它将永远无法工作 - 而使用 HTML 将始终有效
【讨论】:
你看看tutorial on HTML forms怎么样?
表格中输入的数据必须发送到服务器。 action 属性告诉浏览器哪个服务器。
另外,发送数据的常用方法有两种:通过POST(在HTTP 标头中)和通过GET(作为查询字符串的一部分,@987654332 中问号后面的部分) @)。 method 属性中指定了必须使用的方法。
POST 通常用于数据应该只提交一次或应该是私有的(例如在网站上注册或登录)的情况。 GET 用于可以根据需要经常发送的数据(因为生成的 URL 包含一个可以例如书签的查询字符串)。示例:使用 GET 发送 Google 搜索查询,但使用 POST 登录您的 GMail 帐户。更详细的解释可以在here找到。
编辑:下面你会问为什么整个页面不能只被一个表单标签包裹。正如divo 正确回答的那样:您可能有多个表单可以提交到不同的服务器。例如,您可以在网页上提供两个文本字段:一个允许一个使用 Google 搜索站点,另一个使用 Yahoo。稍加创意就会想到其他用途。
编辑 2:
你能指出一个不同的教程吗? W3Schools 有错误。 – David Dorward 10分钟前
如果是这样(我没有检查),这两个看起来很有希望:
【讨论】:
这可能有点牵强,但根据您的网站 www.igurr.com,我认为您真正要问的是:
为什么我不必在我的页面上放置一个表单标签才能将其发回?
这是因为 ASP.NET 会在 body 标记之后自动为您添加一个 form 标记:
<form name="aspnetForm" method="post" action="/default.aspx" id="aspnetForm">
【讨论】:
我明白了原因,很简单:
这些网站并没有为所有页面放置一个大的通用表单标签,而是将表单放在将返回服务器的部分周围,但为什么不将所有内容都放在一个表单中,这是我现在想要理解的。
【讨论】: