Отправка формы через Ajax / jQuery - PullRequest
1 голос
/ 06 октября 2010

Я создал простую форму входа через ajax (jquery), но отправленные значения (адрес электронной почты пользователя для входа в систему, а не пароль) не сохраняются.Поэтому во второй раз, когда пользователь пытается войти в систему, он должен написать свой полный адрес электронной почты вместо того, чтобы использовать сохраненный адрес электронной почты.

Это нормально при отправке формы ajax и (что более важно), есть ли решение ajax / jquery, чтобы браузер «запоминал» переданное значение?

if($(this).attr('href')=="#login")
{
    $.ajax({
        type: "POST",
        url: "http://www.xyz.com/register",
        data:({
            email : $('#email').val(),
            password: $('#password').val()
        }),
        success: function(result)
        {
            if(result=='ok')
            {
                window.location = 'http://www.xyz.com/123';
            }
            else
            {
                $('#result').empty().addClass('error')
                    .append('Something is wrong.');
            }
        }
    });
    return false;
}

1 Ответ

1 голос
/ 06 октября 2010

Вы выполняете запрос AJAX непосредственно в ответ на какое-либо событие пользовательского интерфейса? На основании вашего кода я могу предположить, что это происходит, когда пользователь нажимает какую-то ссылку «Логин». Поэтому сама форма входа не отправлена ​​, как обычно, без участия AJAX. Это, скорее всего, препятствует тому, чтобы браузеры регистрировали форму как заполненную и отправленную и предлагали запомнить содержимое ее полей.

Я предлагаю вам перехватить событие submit () вашей формы и выполнить в нем AJAX-запрос:

$("#loginForm").submit(function(event)
{
    event.preventDefault();
    $.ajax({
        type: "POST",
        url: "http://www.xyz.com/register",
        data:({
            email : $('#email').val(),
            password: $('#password').val()
        }),
        success: function(result)
        {
            if(result=='ok')
            {
                window.location = 'http://www.xyz.com/123';
            }
            else
            {
                $('#result').empty().addClass('error')
                    .append('Something is wrong.');
            }
        }
    });
    return false;
}

Вызов preventDefault() переопределит стандартное поведение отправки формы и позволит вместо этого выполнить запрос AJAX. Теперь вы можете просто добавить обычную кнопку «Вход» (HTML-тег «input» типа «submit») или вручную отправить форму в ответ на нажатие уже имеющейся ссылки:

$("a[href='#login']").click(function () { $("#loginForm").submit(); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...