2010-10-06 4 views
1

Я создал простую форму входа через ajax (jquery), но представленные значения (адрес электронной почты пользователей для целей входа, а не пароль) не сохраняются. Поэтому во второй раз, когда пользователь пытается войти в систему, он должен написать свой полный адрес электронной почты вместо использования сохраненного адреса электронной почты.Отправка формы через 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

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

Я предлагаю вам перехватывать представить() событие вашей формы и сделать запрос 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(); }); 
Смежные вопросы