为什么要把搜索输入框放在form标签内?

8

我发现SO把搜索输入框放在了一个表单标签内,而且我发现一些其他的网站也这样做,比如谷歌,他们把搜索输入框和搜索按钮都放在了这里:

<form action="/search" method="get" name="gs" id="tsf">

我只想知道这样做的好处,因为它似乎很常见,而我却错过了。


我不知道为什么这个问题被踩了...它可能很简单,但它与编程有关且合法。 - JPCosta
6个回答

9

你是否想阅读一篇关于HTML表单的教程

表单中输入的数据必须发送到服务器。 action 属性告诉浏览器发送到哪个服务器。

此外,有两种常见的发送数据方式:通过POST(在HTTP头部)和通过GET(作为查询字符串的一部分,即URL中问号后面的部分)。必须使用哪种方法在method属性中指定。

POST通常用于只需要提交一次或需要保密的数据(例如在网站上注册或登录)。GET用于可以随时发送的数据(因为生成的URL包含一个查询字符串,例如可以添加到书签中)。例如:Google搜索查询使用GET,但要登录GMail帐户则使用POST。更详细的说明可以在这里找到。

编辑:下面你问为什么整个页面不能只包裹在一个表单标签中。正如divo所正确回答的那样:您可能有多个表单可以提交到不同的服务器。例如,您可以在网页上提供两个文本字段:一个允许使用Google搜索该网站,另一个使用Yahoo搜索。通过一些创意,其他用途也会想到。

编辑2

如果是这样的话(我没有检查),这两个看起来很有前途:
你能指出一个不同的教程吗?W3Schools存在错误。- David Dorward 10分钟前
如果是这样的话(我没有检查),这两个看起来很有前途:

4
< p > form 元素的 action 属性告诉浏览器哪个服务器 URL 负责处理表单。


0
这可能有点牵强,但根据您的网站www.igurr.com,我认为您真正想问的是:
“为什么我不需要在我的页面上放置一个表单标签就可以让它回传呢?”
这是因为ASP.NET会在标记后自动添加一个
标记。
<form name="aspnetForm" method="post" action="/default.aspx" id="aspnetForm">

0

你还有什么其他方法可以将搜索词传输到服务器?将输入框放在表单标签内的原因是为了让浏览器将该值POST到服务器进行处理。

编辑:为了更好地理解,建议阅读HTML表单和输入


这当然是最常见的方式,但也可能以其他方式实现。例如,可以搜索Url参数。 - markt
表单的 action 属性定义了要发送内容的文件名称。在 action 属性中定义的文件通常会对接收到的输入执行某些操作。 - Syed Tayyab Ali
action属性指定数据发送到的URL,而不是文件。 - Quentin

0
搜索输入框只是一个通用的文本框,将信息(即您要搜索的内容)从页面发送到服务器的唯一方法是通过表单发送。
www.w3schools.com等网站有一些关于构建表单的很棒的教程。
理论上讲,你可以使用JavaScript提交信息,而不需要显式地输入一个表单,但如果客户端禁用了JavaScript,它永远不会起作用——而使用HTML表单始终可行。

0
我明白原因,它非常简单:
这些网站没有为整个页面放置一个大的通用表单标签,而是仅在将返回服务器的部分周围放置了表单。但现在我正在尝试理解的是,为什么不将所有内容都放在表单中。

2
仅仅因为你可能想在单个页面上拥有多个表单,并且这些表单具有不同的操作。 - Dirk Vollmar
2
因为整个页面不是一个表单。同样的原因,您不会将整个页面放在表格或p标签中。 - Rich Bradshaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接