是啥导致用户在提交表单时转到新页面,可以在 JavaScript 中完成吗?

Posted

技术标签:

【中文标题】是啥导致用户在提交表单时转到新页面,可以在 JavaScript 中完成吗?【英文标题】:What causes the user to go to new a page when they submit a form, and can it be done in JavaScript?是什么导致用户在提交表单时转到新页面,可以在 JavaScript 中完成吗? 【发布时间】:2016-10-27 07:44:40 【问题描述】:

您在表单上提供actionmethod 属性,然后在提交时,它使用action 中指定的URL 完成HTTP method。最终结果将用户带到一个新页面,该页面由服务器返回以响应对该目标 URL 的 POST(或其他)。

什么导致这个重定向?它是 html 表单元素如何工作的固有属性,还是只是 HTTP 响应中的重定向标头?

我正在尝试使用 ajax POST 重现该效果,无需只需手动编写一行 JS 来进行重定向~我希望它自动发生,同样的方式。

提交表单与访问 url www.myHostDomain.com/mySpecifiedFormAction?myFirstFormField=myFirstFormValue&mySecondFormField=mySecondFormValue 基本相同吗?

这不可能,因为浏览器栏总是一个 GET 请求。

【问题讨论】:

你在说哪个重定向? ... POST 和 GET 之间的区别在于 POST 的 URL 和正文中都可以包含数据,GET 在 URL 中包含数据 @LGSon - 我相信 OP 想知道为什么服务器无法从 AJAX 请求重定向 一般情况下,重定向会在服务器端处理。后端实际处理提交的数据是什么? 当您提交 HTML 表单时,您将被带到一个新页面:浏览器实际上呈现来自服务器的响应。是什么导致自动发生的?如果有的话,我想答案将在 HTML 表单规范中。 如果你看看这里你会看到它是如何工作的/看起来:developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/… 【参考方案1】:

Form 的 action 属性起到导航 URL 的作用,也就是“plan to navigate”。 target 属性定义加载服务器返回的响应的位置。

是的,这是“HTML 表单元素如何工作的内在属性”。

处理表单提交的算法在 HTML4 和HTML5 forms 规范中定义。

提交表单本质上是一个普通的 URL 导航(通过 <a href> 元素),但会自动收集参数,这些参数可以作为参数 (<form method="get">) 或作为请求正文参数 (<form method="post">) 进入最终导航 URL。

【讨论】:

最后,一个很好的参考答案,而不仅仅是 asinine cmets 告诉我自己弄清楚。谢谢!

以上是关于是啥导致用户在提交表单时转到新页面,可以在 JavaScript 中完成吗?的主要内容,如果未能解决你的问题,请参考以下文章

简单介绍redis分布式锁解决表单重复提交的问题

当点击自定义 TableView 单元格中的 UITextField 时转到新视图

防止表单重复提交

为 ASP.Net Core Web API 项目创建要在启动时转到的索引页面

jsp 如何实现提交表单 但不跳转到提交页面

Laravel 提交按钮不跳转到下一页和上一页