Ajax: автозаполнение полей

Допустим, такая ситуация. Есть ajax-приложение, в котором форма логина выглядит как-то так:

<form>
    <input type="text"     name="ajax-username" />
    <input type="password" name="ajax-password" />
    <input type="submit" />
</form>​


var form = document.querySelector( 'form' );

form.addEventListener( 'submit', function (e) {
    ajaxLogin(function () {
        form.innerHTML += '<br /> success';
    });
    e.preventDefault();
}, false);​


Т.Е. Мы перехватываем сабмит формы и вместо того, чтобы перезапрашивать страницу — отправляем её ajax'ом, логинимся и JS'ом генерим новый код.

Но в такой подходе всё прекрасно кроме одного — не происходит «запоминание» введённой информации — логина и пароля и следующий вход вместо того, чтобы их браузер подставил приходится вводить их заново.

Если просто убрать e.preventDefault(), то страница после сабмита формы будет перезагружаться.

Посоветуете ли какое-либо решение этой проблемы?
  • Вопрос задан
  • 4420 просмотров
Решения вопроса 1
taliban
@taliban
php программист
1. Сделайте себе фейковый адрес который ничего не делает и возвращает 200 ответ
2. Форме укажите этот фейковый адрес и _target=«iframe_name» (естественно фрейм должен быть)
2. Перед аяксовой отправкой данных на правильный адрес, делайте реальный сабмит формы.
3. Логиньтесь аяксом, смотрите как браузер спрашивает не запомнить ли логин/пароль
4.!!!
5. PROFIT!
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@PomanoB
Попробуйте использовать history.pushState
Ответ написан
@1x1
Если я правильно помню, не запоминает только Google Chrome. В качестве решения можно перенаправить форму в скрытый фрейм, с обязательным указанием для формы атрибута action, отличного от текущей страницы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы