jquery – 如何使Chrome记住AJAX表单的密码?

我使用AJAX在我的登录页面上进行快速输入验证。如果一切正确,用户将被重定向

这里是代码

$(form).submit(function () {
    $.post($(this).attr('action'),$(this).serialize(),function (data) {
        if (data.status == 'SUCCESS') {
            window.location = data.redirectUrl;
        }
   }
...

它在所有浏览器中工作得很好。但Chrome中有一个问题。它不提供保存密码。

当JavaScript关闭时,密码被保存,所以问题肯定是重定向到一个新的位置。

如何解决这个问题?

解决方法

我发现了一个脏的解决方法为这个问题,通过插入一个不可见的iframe和目标表单到它:
<iframe src="/blank.html" id="loginTarget" name="loginTarget" style="display:none">
</iframe>

<form id="loginForm" action="/blank.html" method="post" target="loginTarget"></form>

相应的JavaScript:

$('#loginForm').submit(function () {
    $.post('/login',function (data) {
        if (data.status == 'SUCCESS') {
            window.location = data.redirectUrl;
        }
    })
})

诀窍是,真的有两个请求。首先,表单提交到/blank.html,这将被服务器忽略,但这会触发Chrome中的密码保存对话框。此外,我们做一个ajax请求,并提交真实的形式/ login。由于第一个请求的目标是一个不可见的iframe页面不刷新。

如果您不想重定向到另一个页面,这当然更有用。如果你想重定向无论如何改变action属性是一个更好的解决方案。

编辑:

这里是一个简单的JSFiddle版本的它。与注释部分的声明相反,没有重新加载所需的页面,它似乎工作非常可靠。我在Win XP的Chrome和Linux的Chromium测试了。

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...