2010-10-06 120 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

你是否直接在某個UI事件的響應中執行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'輸入'類型爲'submit'的標籤)或手動提交表單作爲回覆,您可以點擊您已有的鏈接:

$("a[href='#login']").click(function() { $("#loginForm").submit(); });