2011-01-13 12 views
0

JQueryとC#を使用しています。子ページからJQueryダイアログボックスを閉じる方法

ログインリンクのクリックでJQueryモーダルダイアログを開きます。その後、完全なフォームとフォームのアクションが/login.aspxページに変更され、15秒間私はAjax処理イメージを表示しています。login.aspxページでは、ユーザーが入力したユーザー名とパスワードを検証します。 2つのシナリオがあります

1)ユーザーは有効なユーザー名とパスワードを入力します。この場合、/login.aspxページの検証後にログインリンクがクリックされた同じページに再度リダイレクトされます。私の現在のページが再び読み込まれるのでうまく動作します。

2)ただし、ユーザーが間違ったユーザー名とパスワードを入力した場合、ユーザーは/login.aspxページにアクセスします(ユーザーがログインリンクをクリックしたページにリダイレクトされません)。今問題は、ユーザーが間違ったユーザー名とパスワードを入力した後に/login.aspxが入力された場合ですが、間にユーザーがブラウザの戻るボタンをクリックすると、15秒間タイムアウトが設定されたため、ユーザーが間違ったユーザー名とパスワードを入力すると、デイログボックスを閉じる必要があります。

以下は、ダイアログボックスを開くJqueryコードです。

$('#skywardsLogin').dialog({ 
         autoOpen: true, 
         width: 450, 
         modal: true, 
         title: $('.LoginpopupHeaderText').text() 
        }); 

そしてここで私は、フォームを送信しようとすると、フォームのアクションを変更しても、私はAjaxの処理イメージを示すために15秒のタイムアウトを与えられていています。

$("#aspnetForm").attr("action", "http://localhost:8080/english/include/aspx/Login.aspx"); 
$("#aspnetForm").submit(); 
$('#divSuccessLogin').show(); 
// Wait for 15 seconds 
setTimeout(closeDialog, 15000); 

CloseDailogコードを以下に示します。

 function closeDialog() 
     { 
      $('#skywardsLogin').dialog("close"); 
} 

アヤックスの処理イメージを表示するのに15秒間のタイムアウトがあるので、私のダウグボックスを閉じるのには苦労しています。お勧めします

+0

問題が何ですか。あなたは何と苦闘していますか? closeDialogが呼び出されているかどうか – selbie

+0

すべて正常に動作しています同じページのダイアログボックスが正しく閉じていますが、ユーザーが間違ったユーザー名とパスワードを入力した場合、login.aspxコードに書かれているコードに従ってlogin.aspxページに残りますログインリンクがクリックされた場所から同じページにリダイレクトされることがあります。問題は私がAjax処理イメージを表示するために15秒のタイムアウトを使用していることと、ユーザーが間違った値を入力してブラウザの戻るボタンをクリックするとタイムアウトが15秒間、AFTが15秒間に処理される画像を処理します。 –

+1

少し混乱します。なぜタイマーを使いますか?ログインをクリックするだけでダイアログを表示するのはなぜですか(タイマーなし)? – Gidon

答えて

1

私はGidonに少し戸惑うことに同意します。しかし、私があなたを正しく理解しているかどうかを見てみましょう。

  1. ユーザーは、index.aspxというページになります。
  2. ユーザはダイアログを開くリンクをクリックします($().dialog()を使用)
  3. 新しいダイアログでは、ユーザは自分のユーザ名/パスワードを入力します。
  4. 送信ボタンを押すと、aspnetFormの動作が変更され、フォームが送信されます。
  5. 情報が間違っていると、ユーザーは引き続きlogin.aspxになります。
  6. ユーザーはブラウザのバックボタンを使用しています
  7. どうなりますか?

これは私が理解していない最後の部分です。ユーザーが戻るボタンをクリックしても、index.aspxで終わることはありませんか?

なぜタイマーですか? ajaxコールはありませんか?あなたはAJAX呼び出しが完了した後に何かを起動したい場合は、タイマーの使用を使用していない$("#aspnetForm").submit();は、通常のHTMLフォームとしてフォームを送信するか、いずれにしてもjQueryの標準.submit()

を上書きするために何かを使用している:

$(document).ajaxComplete(function() { 
    $('#skywardsLogin').dialog("close"); 
}); 

解決策へのリンクを提供することもできます。

私は正しい方向にいるのですか?

+0

ご返信ありがとうございます、私はあなたのステップで何かを修正するだけです。 4)#送信ボタンを押すと、aspnetFormの動作が変更され、フォームが送信されます。処理イメージは10秒間タイムアウトし、login.aspxとの間にユーザ名とパスワードを検証した後、再びインデックスが読み込まれます。 aspxページが有効なページなら、間違ったユーザーがまだlogin.aspxページにあり、ユーザーがブラウザの戻るボタンをクリックしてもまだ私の処理イメージが表示されます。 –

関連する問題