我正在使用ASP.net创建一个网站,我想用JQuery ModalDialog做一个很好的登录弹出窗口(或者ajax ...我对ajax不太了解)。我有一个包含每个允许用户的数据库,如果用户成功登录,我想关闭弹出窗口(如果没有,我希望弹出窗口保留,并显示错误消息)。问题是我的验证是在服务器端完成的,而JQuery在客户端运行。
答案 0 :(得分:2)
最简单的方法是从对话框内部进行jQuery ajax调用,然后在代码后面的webmethod监听此ajax,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中,但你可以得到这个想法
答案 1 :(得分:0)
这取决于你用于弹出窗口的jquery插件。
基本上你需要掌握弹出的句柄。该插件应具有关闭功能,您需要在从服务器获得成功响应后调用它。他的大多数插件通常都有$("#pop_up_id").close();
答案 2 :(得分:0)
在服务器端创建一个返回字符串的Web方法
If successful login it will return 'success'
or if invalid login it willl return 'fail'
现在在客户端使用jQuery ajax函数对你的方法进行ajax调用,就像这样
$.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')}
}
)
答案 3 :(得分:0)
Scott Selby,在你的代码中,你正在刷新页面,这正在扼杀ajax的含义。只需调用插件的close()函数而不刷新页面即可关闭模态窗口。