如何在服务器验证后关闭jquery弹出窗口
我正在使用ASP.net创建一个网站,我想用JQuery ModalDialog(或者ajax…我对ajax了解不多)创建一个很好的登录弹出窗口。我有一个包含所有允许用户的数据库,如果用户成功登录,我想关闭弹出窗口(如果没有,我希望弹出窗口保持,并显示错误消息)。问题是我的验证是在服务器端完成的,JQuery在客户端运行。最简单的方法是从对话框内部调用JQuery ajax,然后使用代码隐藏中的webmethod侦听此ajax,webmethod将返回成功登录,或不成功,然后您处理删除对话框客户端 我将为您获取一些示例代码如何在服务器验证后关闭jquery弹出窗口,jquery,asp.net,ajax,Jquery,Asp.net,Ajax,我正在使用ASP.net创建一个网站,我想用JQuery ModalDialog(或者ajax…我对ajax了解不多)创建一个很好的登录弹出窗口。我有一个包含所有允许用户的数据库,如果用户成功登录,我想关闭弹出窗口(如果没有,我希望弹出窗口保持,并显示错误消息)。问题是我的验证是在服务器端完成的,JQuery在客户端运行。最简单的方法是从对话框内部调用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;
}
}
函数fnValidateLogIn(){
$('#')。文本(“”);
var email=$('#').val();
var pass=$('#').val();
如果(通过==“”){
$('#')。文本(“请输入密码”);
返回false;
}
否则{
$.ajax({
类型:“POST”,
url:“Login.aspx/LoginUser”,
数据:“{'email':'“+email+”,'pass':'“+pass+”}”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(msg){
var obj=$.parseJSON(msg.d);
if(obj.login==“失败”)$(“#”).text(“登录失败”);
如果(obj.login==“成功”){
location.reload(true);//您可以隐藏弹出窗口而不是刷新
window.location=$('.hidden_url').text();//您可以隐藏弹出窗口而不是重定向
}
}
});
返回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
_
公共共享函数LoginUser(电子邮件作为字符串,传递作为字符串)作为字符串
'验证用户身份的代码
返回“{”“login”“:”“success”“}”示例
这是在VB.Net中,但是你可以得到这个想法这取决于你在弹出窗口中使用的jquery插件
基本上你需要得到弹出窗口的控制。该插件应该有一个关闭功能,您需要在从服务器获得成功响应后调用它。大多数插件通常都有类似于
$(“#pop_up_id”).close()的东西代码>在服务器端创建一个返回字符串的web方法
If successful login it will return 'success'
or if invalid login it willl return 'fail'
现在在客户端使用jqueryajax函数对您的方法进行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')}
}
)
Scott Selby,在您的代码中,您正在刷新页面,这扼杀了ajax的意义。只需调用插件的close()函数即可关闭模式窗口,无需页面刷新。在我的代码中,我选择重定向到另一个页面,但这是隐藏对话框的地方。我编辑了代码,我选择在代码中刷新,但这是处理要隐藏的弹出窗口的地方,还可以将响应作为json发送回—一个字符串只适用于一个参数,您能提供一些代码配合吗?