表格帖子参数以网址

时间:2016-07-01 15:35:30

标签: javascript html angularjs html-form

这将很难解释,但基本上我有一个带有登录表单的角度应用程序,它在提交时运行一个函数,它向服务器发送ajax请求以进行登录。

现在,我没有使用ng-submit,而是劫持正常的提交属性,如下所示:

<form my-form submit="controllername.doSubmit()">

然后我有一个名为“my-form”的角度指令,它在其定义对象中使用{require:'form'},然后在postLink函数中执行此操作:

element.bind('submit', function(event)
{
    // Removed for brevity

    scope.$apply(scope.submit);
});

所以,基本上这个表单提交的东西是很久以前编写的,并且做了很多其他的事情,比如触发表单验证和默认情况下的东西,所以我不想重写任何这些或者回到使用ng-submit 。除了形成任何其他东西,我还有一些使用此代码的大型应用程序需要进行大量更改。

无论如何,这一切都在表面上工作正常,但如果我填写登录表格,然后做一些其他的东西(包括以相同的方式填写其他表格)然后离开我的笔记本电脑几天来回到页面,不知何故所有的表单数据都被添加到了URL栏中,之后??在包含普通视图密码的#之前!

不知道为什么这不会立即发生,在没有睡觉的PC之后,并不总是如此。另一个奇怪的事情是参数的名称不是原始的(电子邮件,密码),而是当前页面上第一个表单的参数名称(actionStatus,必需),因此Chrome显然很困惑。 / p>

我的直觉告诉我,在提交表单时,formData存储在某个地方以供日后使用,因为我在运行我的javascript函数时没有正确取消表单的默认操作,因为它是单页面应用程序formData永远不会留下内存。然后它认为它已经进入了一个新的页面并将这些数据放入URl中,但由于页面上的表单已经改变,因此它的名称错误。

抱歉,我无法提供更多代码,只是一个相当粗俗的描述,但我不知道还有什么可以说的,这一切都很奇怪。

1 个答案:

答案 0 :(得分:2)

我终于得到了答案,答案完全出乎意料。

我使用一个名为browserSync的插件来同步我正在测试的多个浏览器,它有一个称为表单同步功能的功能。

我打开了chrome,当我打开另一个浏览器时(通常在早上计算机第一次醒来时)我必须登录,因为它们在不同的页面上,它将我的登录详细信息从Firefox复制到第一个表单中它在我现有的镀铬窗口中找到。它还将Firefox登录表单的内容放入chrome的URL中。

疯狂。