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