2009-08-15 11 views
0

[OK]を、のjQuery、Ajaxフォームとリダイレクト

は、私はいくつかの派手なポップアップや検証もののためにAJAXを使用する必要があるが、私はすべてがフォームでOKであれば、JavaScriptをリダイレクト避けたいです。

ここでは基本的な単純なシナリオを示します。

私たちは動的サイトといくつかのユーザーログインフォームを持っています。 Alロジック(ユーザーは存在する、パスワードはokなど)はサーバー側にあります。サーバ側にリダイレクトを残すためにフロントエンドに指示する方法を今すぐ

$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

私はuは私が必要なものを理解することを信じて、私はすべての提案と回答:) 感謝をappriciate!

答えて

3

JSONをクライアントに返します。 Statusパラメーター、Messageパラメーター、およびUrlパラメーターがあります。成功した場合は、Statusをtrueに設定し、URLを指示するページに設定します。エラーの場合は、ステータスをFalseに設定し、メッセージをエラーメッセージに設定します。クライアント側では、ステータスを使用してメッセージをリダイレクトするかポップアップするかを決定します。

$.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); 
     } 
    } 
});