【问题标题】:Stop "?" from being added to URL停止 ”?”从被添加到 URL
【发布时间】:2016-12-07 01:36:15
【问题描述】:

我目前有一个 Angular 2 应用程序,用户可以在其中提交表单来创建新项目。单击提交按钮时,它会调用一个函数将数据发送到服务器,并在服务器确认数据已成功保存后导航到新页面。

我的问题是因为表单提交将表单参数附加到 URL。因此,例如,如果我有一个名为 title 的输入,并且提交将我带到 mytitle 路由,这是 title 字段的输入,Angular(或任何注入 GET 参数的东西)将尝试导航到 mysite.com/mytitle?title=mytitle而不仅仅是mysite.com/mytitle。即使在我的所有输入中添加[ngModelOptions]="{standalone: true}" 仍然会留下一个问号,后面没有参数。

这是一个问题,因为它会导致 Angular 重新加载应用程序,因为给定的路由与我的路由定义中的任何路由都不匹配。有没有办法完全禁用注入 URL 的 GET 参数? POST 也不起作用,因为我无处可发帖,而且我的下一个 URL 使用来自表单本身的数据。

【问题讨论】:

    标签: forms http angular


    【解决方案1】:

    我找到了问题的答案,“提交”按钮默认为“提交”类型,因此将其更改为“按钮”类型删除了 GET 参数注入行为。

    【讨论】:

    • 当使用 HTTP GET 请求(默认)而不是 POST 请求提交 HTML 表单时,客户端 Web 浏览器会将参数添加到 URL 查询字符串。如果您不希望参数出现在 URL 中,则需要将表单的 method 属性设置为 "post",并确保您提交表单的 URL 期望通过 POST 获取表单值的GET。这就是基于 HTTP 的 HTML 表单提交的一般工作方式,这不是 Angular 特有的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多