2011-03-04 33 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

相關問題