2009-08-15 111 views
0

好吧,jQuery的Ajax表單和重定向

我需要使用AJAX的一些奇特的彈出窗口和驗證的東西,但我想避免的JavaScript重定向如果一切形式確定。

這裏是基本簡單的情況。

我們有動態網站和一些用戶登錄表單。 Al邏輯(用戶是否存在,密碼是否正確等)位於服務器端。

服務器的僞代碼如下所示:

$username,$password; //form user input 

if (authenicate($user,$password)){ 
    redirect('myaccount'); 
} 
else { 
    print 'Wrong username and/or password'; //this should be displayed in the popup. 
} 

現在,如果我使用AJAX來顯示打印的內容服務器,如何告訴前端離開重定向到服務器端!?

我解決這個愚蠢的方式(因爲我有大約15種不同的形式)。如果答案表單服務器是例如「LOGGED」,我使用JavaScript重定向。

只是提及我使用jQuery和這個插件http://malsup.com/jquery/form/。 一些示例代碼是在這裏: http://pastie.org/584993

我相信你也會明白我需要什麼,我都並欣賞的建議和答案:) 謝謝!

回答

3

將JSON發送回客戶端。有一個狀態參數,一個消息參數和一個Url參數。成功時將Status設置爲true,並將Url指向要導向的頁面。出錯時,將狀態設置爲False,將消息設置爲錯誤消息。在客戶端,使用Status來確定是重定向還是彈出消息

$.ajax({ 
    url: '/login.php', 
    dataType: 'json', 
    data: $('form').serialize(), 
    type: 'post', 
    success: function(data) { 
     if (data.Status) { 
      location.href = data.Url; 
     } 
     else { 
      alert(data.Message); 
     } 
    } 
});