Форма входа Ajax - браузеры не сохранят пароль - PullRequest
3 голосов
/ 04 марта 2011

У меня есть форма входа в Ajax, которая проверяет правильность указанных учетных данных и перенаправляет их на другую страницу. Форма входа в систему создается с помощью вызова HXR - она ​​не встроена в код страницы входа в систему.

Проблема в том, что я не могу заставить браузеры запрашивать запоминание паролей. Как только у меня появился запрос 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 (обратите внимание, что в форме нет кнопки отправки - кнопка находится в другом месте и имеет действие по нажатию кнопки для отправки формы с указанным идентификатором):

<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>

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Вы действительно должны опубликовать код. все очень хорошо делать .send в вашем обратном вызове, это нормально. Тем не менее, вам нужно опубликовать, как вы обрабатываете форму и в первую очередь начать отправку.

это должно работать, если вы перехватываете метод формы submit - но если у вас - скажем, есть кнопка с обработчиком кликов, она не будет рассматриваться как отправка, поэтому она не будет помнить вещи , Кроме того, вы делаете event.stop или .preventDefault?

1 голос
/ 04 марта 2011

Я рекомендую вам использовать традиционную форму sumbit, но отправлять в скрытый iframe. (Или сама форма входа может быть в iframe). Таким образом, вы все равно можете отправлять обратно ответы JS на iframe, который будет выполнен, и браузеры будут знать, что это была форма входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...