2012-09-01 101 views
0

我正在製作一個使用ASP.net的網站,並且我想用JQuery ModalDialog(或ajax做出一個很好的登錄彈出窗口...我對ajax瞭解不多) 。我有一個包含每個允許的用戶的數據庫,如果用戶成功登錄(如果沒有,我希望彈出窗口保留並顯示錯誤消息),我想關閉彈出窗口。問題是我的驗證在服務器端完成,JQuery在客戶端運行。如何在SERVER驗證後關閉jquery彈出窗口

+0

你能提供一些代碼隊友嗎? – Littm

回答

2

最簡單的方法是從你的對話框裏做一個jQuery的AJAX調用,然後在後面的代碼一個WebMethod監聽該阿賈克斯,將WebMethod將返回登錄成功,或失敗,你處理刪除對話框客戶端

我會得到一些示例代碼,您

 function fnValidateLogIn() {   
     $('#<%= lblLoginMessage.ClientID %>').text(""); 
     var email = $('#<%= txtEmail.ClientID %>').val(); 
     var pass = $('#<%= txtPass.ClientID %>').val(); 
     if (pass == "") { 
      $('#<%= lblLoginMessage.ClientID %>').text("Please Enter A Password"); 
      return false; 
     } 
     else { 
      $.ajax({ 
       type: "POST", 
       url: "Login.aspx/LoginUser", 
       data: "{'email':'" + email + "', 'pass' : '" + pass + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (msg) { 
        var obj = $.parseJSON(msg.d); 
        if (obj.login == "failed") $('#<%= lblLoginMessage.ClientID %>').text("Login Failed"); 
        if (obj.login == "success") { 
         location.reload(true); //you can hide popup instead of refreshing 
         window.location = $('.hidden_url').text(); //you can hid popup instead of redirect 
        } 
       } 
      }); 
      return false; 
     } 
    } 

後面的代碼:

 <System.Web.Services.WebMethod(EnableSession:=True)> _ 
     Public Shared Function LoginUser(email As String, pass As String) As String 

     'code to validate user 

     return "{ ""login "" : ""success"" }" 'example 

也就是說在VB.Net,但你可以得到的想法

+0

我編輯了代碼,我選擇了在我的代碼中刷新,但這是您要處理要隱藏的彈出窗口的位置,並且將響應作爲json返回 - 只是一個字符串僅適用於一個參數,我的代碼中爲 –

0

這取決於你用於彈出的jQuery插件。

基本上你需要得到彈出的句柄。這個插件應該有一個關閉功能,你需要在你的服務器獲得成功的響應後調用它。大多數他的通常插件有一些像$("#pop_up_id").close();

0

在服務器端做一個Web方法,其在客戶端使用jQuery的AJAX功能使Ajax調用返回一個字符串,現在

If successful login it will return 'success' 
or if invalid login it willl return 'fail' 

到你的方法是這樣

$.ajax(
url:your.asmx/webmethod 
data:{username:$('#usernametextboxid').val(),password:$('#passwordtextbox').val() 
type:'POST' 
dataType:'json' 
success:function(data){ 
//logic to hide popup 

if(data.d=='success'){$('#modalpopupid').close()} 
else if(data.d=='fail'){$('#modalpopupid').html('Invalid login')} 
else{alert('some error occured.Please try again')} 

} 
) 
0

Scott Selby,在您的代碼中,您正在刷新頁面,這正在消除ajax的含義。只需調用插件的close()函數而不刷新頁面,就可以關閉模​​式窗口。

+0

,我選擇了重定向到另一個頁面,但這是你隱藏對話框的地方 –