2011-03-04 110 views
3

我有Ajax登录表单,它检查给定的凭据是否正确并重定向到另一个页面。登录表单本身是通过HXR调用构建的 - 它不是在登录页面代码中构建的。Ajax登录表单 - 浏览器不会保存密码

问题是我无法让浏览器提示记住密码。一旦我有Firefox提示,但由于表单是由XHR调用构建的,Firefox并没有将这些值粘贴到表单中。

PS。我在登录成功时使用mootools(Form.send)和通常的window.location。 PSS。登录页面的地址始终相同。

下面的代码是由XHR一个元素(我使用MochaUI)中加载: 的JavaScript:

$('loginwindow_form').set('send', { 
    "url": "auth/ajax_login", 
    "method": "post", 
    "onRequest": function() { 
     $("loginWindow_spinner").show(); 
    }, 
    "onComplete": function (response) { 
     $("loginWindow_spinner").hide(); 
    }, 
    "onSuccess": function (responseText, responseXML) { 
     window.location = "appinit"; 
    }, 
    "onFailure": function (xhr) { 
     MUI.notification('onFailure'); 
    } 
}); 

$("loginwindow_form").addEvent("submit", function (e) { 
    !e || e.stop(); 
    $('loginwindow_form').send(); 
});

XHTML(可注意到该表单没有已提交按钮 - 该按钮在其他地方,有的onclick动作来发送与给定的ID的形式):

<iframe src="auth/blank" id="blankiframe" name="blankiframe" style="display:none"></iframe> 
<form action="appinit" method="post" name="loginwindow_form" id="loginwindow_form" class="standardform" target="blankiframe"> 
    <input type="text" name="email" class="input text" id="loginwindow_form_email" /> 
    <input type="password" name="password" class="input text password" id="loginwindow_form_loginwindow_form_password" /> 
</form> 

发送按钮(在另一个,XHR加载,元素):

<button class="button" action="{sendForm: 'loginwindow_form'}"> 
    <div class="accept">Login</div> 
</button> 
+0

你可以发布你的代码吗? – kjy112 2011-03-05 03:35:44

+0

我也在寻找解决方案。你找到了吗? – denislexic 2012-08-31 00:56:48

回答

1

我建议您使用传统的sumbit表单,但要提交到隐藏的iframe中。 (或者登录表单本身可以在iframe中)。这样,您仍然可以将JS响应发送回将执行的iframe,并且浏览器会知道它是登录表单。

2

你真的应该发布代码。在回调中做一个.send都很好,没关系。但是,您仍然需要发布如何处理表单并首先提交提交。

它应该工作的方式是如果你拦截表单的submit方法 - 但是如果你说 - 有一个带有点击处理程序的按钮,它不会被视为提交,因此它不会记住事情。另外,你在做event.stop.preventDefault

相关问题