Button如何调用JS函数?关于AJAX无刷新验证登录。

时间:2023-01-28 19:13:04
 //default.aspx 这是前台希,望现实无刷新客户端验证。省略了表格那部分,那个PANEL面板是希望能像chinaren那样在验证登录后隐蔽登录面板,然后换一个面板显示欢迎界面,新手,这方面只会先凑合了。web.Config已经配好了。
          

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>  
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1" />
    <meta name="CODE_lANGUAGE" content="C#"/>
    <meta name="vs_defaultClientScript" content="JavaScript"/>
    <meta name="vc_targetschema" content="http://schemas.microsoft.com/intellisense/ie5"/>
    <script language="jscript" type="text/jscript">
     function vefilyUserID(name)  //定义函数,验证用户名
     {  
         var res=_Default.GetReturnCode(name,IsUserExist_callback);                               
     }
     
     function IsUserExist_callback(res)
     {
        var pls=document.getElementById('plsucesslog');   
        val pla=document.getElementById('plbeforelog');  
        var bRet=res.value;
        if(bRet=="0")
        {
           pla.Visible=false;
           pls.Visible=true; 
        }
        else if(bRet=="1")
        {
            alert('用户名不符合要求!');
        }
        else
        {
            alert('用户不存在,请您先注册!');
        }
     }                
    </script>   
</head>
<body>
<form id="Form1" runat="server" method="post">
<asp:Panel ID="plbeforelog" runat="server">                                                     
<asp:Label ID="labID" runat="server" Font-Size="9pt" Style="z-index: 100; left: 16px;
position: absolute; top: 9px" Text="用户名"></asp:Label>
<asp:Label ID="labPwd" runat="server" Font-Size="9pt" Style="z-index: 101; left: 16px;
position: absolute; top: 35px" Text="密 码"></asp:Label>
<asp:TextBox ID="tbID" runat="server" Style="z-index: 102; left: 60px; position: absolute;
top: 4px" Width="170px"></asp:TextBox>                            
<asp:Button ID="btnLogin" runat="server" Style="z-index: 103; left: 141px; position: absolute;
top: 76px" Text="登 录" Width="94px" OnClientClick="return vefilyUserID(tbID.Text)"/>
<asp:HyperLink ID="HyperLink1" runat="server" Font-Size="9pt" Style="z-index: 104;
left: 182px; position: absolute; top: 109px">HyperLink</asp:HyperLink>
<asp:HyperLink ID="HyperLink2" runat="server" Font-Size="9pt" Style="z-index: 105;
left: 98px; position: absolute; top: 108px">HyperLink</asp:HyperLink>
<asp:HyperLink ID="HyperLink3" runat="server" Font-Size="9pt" Style="z-index: 106;
left: 16px; position: absolute; top: 109px">HyperLink</asp:HyperLink>
<asp:CheckBox ID="cbKeep" runat="server" Font-Size="9pt" Style="z-index: 107;
left: 17px; position: absolute; top: 80px" Text="下次记住我">                                         
<asp:TextBox ID="tbPwd" runat="server" Style="z-index: 108; left: 60px; position: absolute;
top: 30px" TextMode="Password" Width="170px"></asp:TextBox>
</asp:Panel>
</form>
</body>
</html>

这是后台的.cs文件

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text.RegularExpressions;


public partial class _Default : System.Web.UI.Page
{
    
    protected void Page_Load(object sender, EventArgs e)
    {
        AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default)); 
    }


    [AjaxPro.AjaxMethod]
    public string GetReturnCode(string strID)
    {
        if (!IsValidUserID(strID))
        {
            return "1";
        }
        else if (!IsUserExist(strID))
        {
            return "2";
        }
        else 
        {
            return "0";
        }
    }
    private bool IsUserExist(string strID)   //判决用户是否是注册用户,都是用存储过程。我还没看懂。
    {
        string sqlcom = "Select * from tabUser_PTInfo where UserID='" + tbID.Text + "' and UserKey='" + tbPwd.Text + "'";
        SqlConnection nsql = new SqlConnection();
        nsql.ConnectionString = ConfigurationManager.ConnectionStrings["constr"].ToString();

        SqlDataAdapter sda = new SqlDataAdapter(sqlcom, nsql);
        DataSet ds = new DataSet();
        sda.Fill(ds);

        if (ds.Tables[0].Rows.Count > 0)
        {
            return true;
        }
        else 
        {
            return false;
        }
    }
    private bool IsValidUserID(string strID) 
    {
        return(Regex.IsMatch(strID,@"^(\w{6,15})$"));
    }

}

11 个解决方案

#1


mark

#2



        protected   void   Page_Load(object   sender,   EventArgs   e) 
        { 
                AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));  
                 btnLogin.Attributes.Add("onClick", "vefilyUserID();return false;")        } 

#3


this.RegisterStartupScript("", "<script>selectNum_ssf1()</script>");
  //this.RegisterStartupScript("aa", "<script>selectNum_ssf6_UpFile()</script>");
            //ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "TestAlert", "selectNum_ssf6_UpFile()", true);//通过ajax的脚本管理器来调用后台的js方法


都试试吧 

#4


给你一个可以用的:(但是太长了,要的留个邮箱)
js
---------------------------------------------
function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}
var xmlDom = false;//XMLHTTP对象
var arr_UserName = new Array();//保存已经查询过的 用户名
var arr_BackInfo = new Array();//保存查询过的用户名 是否可以注册的信息
var canSubmit = false;//用户点击注册按钮,是否可以提交到服务器
var SignOutStr='<a href ="javascript:signout();" >注销</a>';//注销按钮的字符串表示
var LoginStr="<a href =\"javascript:loadcontrol('register.ashx');\" >注册</a>&nbsp; &nbsp;<a href =\"javascript:loadcontrol('login.ashx');\" >登录</a>&nbsp;";

var AxmlDom = new Object();
AxmlDom.reqList = [];

function createX()
{
//创建一个xmlhttp
try
{
xmlDom = new ActiveXObject("Msxml2.XMLHTTP"); 

catch (E)
{
try
{
xmlDom = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
     xmlDom = new XMLHttpRequest(); //兼容非ie浏览器,直接创建XMLHTTP对象

}
}
return xmlDom;
}
createX();
AxmlDom.Post=function(url,data,  callback, callback2) {
 var req=createX(); 
req.onreadystatechange = function() 
{
if (req.readyState == 4) // only if req shows "loaded"
{
if (req.status < 400)// only if "OK"
 {
    if(callback)
    {
                 callback(req) ;
     $("loadingflag").style.display ='none';
    }
 }
else 
{
         if (callback2)
         {
        callback2(req);
        $("loadingflag").style.display ='none';
        }
}
}
}
req.open("POST", url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(data);
AxmlDom.reqList.push(req);
$("loadingflag").style.display ='';
return req;
}


//加载用户控件的工具方法
function loadcontrol(controlname)
{
var d = new Date();
var strURL = controlname+"?type=0&guid=" + d.getTime();
xmlDom.Open("get",strURL , true);
xmlDom.onreadystatechange = function(){
  if (xmlDom.readyState == 4 )
  if(xmlDom.status == 200)
{
$("main").innerHTML=xmlDom.responseText;
$("loadingflag").style.display ='none';
}
else
$("loadingflag").innerHTML = "向服务器请求数据时出现错误!"
  };
xmlDom.Send(xmlDom);
$("loadingflag").style.display ='';
}

//验证密码是否符合规则
function j_password()
{
var password = $("Txt_Password").value;
if (password.length < 6 || password.length > 12)//密码长度是否符合规则
{
$("PwdError").innerHTML = "<font color=\"red\">密码长度不正确。<font>";
canSubmit = false;
return;
}

if ($("Txt_UserName").value == password)//用户名和密码不能相同
{
$("PwdError").innerHTML = "<font color=\"red\">为了您的安全,用户名与密码不能一致,请使用新的密码<font>";
canSubmit = false;
return;
}

var reg = "\\W";
if(password.match(reg))//密码是否出现英文或数字之外的字符
{
$("PwdError").innerHTML = "<font color=\"red\">密码只能是英文或者数字!<font>";
canSubmit = false;
return;
}

canSubmit = true;//都符合条件,验证通过
$("PwdError").innerHTML = "";
}
//判断两次输入的密码是否一致
function j_password1()
{
var password = $("Txt_Password_AG").value;
if(password != $("Txt_Password").value)//两次输入的密码不相同,出现错误提示
{
$("PwdError2").innerHTML = "<font color=\"red\">两次输入的密码不一致,请重新输入!<font>";
$("Txt_Password_AG").value = "";
canSubmit = false;
return;
}
//两次输入的密码相同,校验通过。
$("PwdError2").innerHTML = "";
canSubmit = true;
}

#5


谢谢,正在学习中, 我的邮箱是maomaohappyfei@qq.com还希望大家多多帮助,不过有个问题问一下,这个论坛怎么给人加分啊。正在郁闷中。嘿嘿!

#6


mark

#7


O_O

#8


好!
JF

#9


学习了.

#10


O_O

 ~_~ 

  ~_~

#11


我也要
ilrf@163.com
谢谢wwwpcseanet 

#1


mark

#2



        protected   void   Page_Load(object   sender,   EventArgs   e) 
        { 
                AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));  
                 btnLogin.Attributes.Add("onClick", "vefilyUserID();return false;")        } 

#3


this.RegisterStartupScript("", "<script>selectNum_ssf1()</script>");
  //this.RegisterStartupScript("aa", "<script>selectNum_ssf6_UpFile()</script>");
            //ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "TestAlert", "selectNum_ssf6_UpFile()", true);//通过ajax的脚本管理器来调用后台的js方法


都试试吧 

#4


给你一个可以用的:(但是太长了,要的留个邮箱)
js
---------------------------------------------
function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}
var xmlDom = false;//XMLHTTP对象
var arr_UserName = new Array();//保存已经查询过的 用户名
var arr_BackInfo = new Array();//保存查询过的用户名 是否可以注册的信息
var canSubmit = false;//用户点击注册按钮,是否可以提交到服务器
var SignOutStr='<a href ="javascript:signout();" >注销</a>';//注销按钮的字符串表示
var LoginStr="<a href =\"javascript:loadcontrol('register.ashx');\" >注册</a>&nbsp; &nbsp;<a href =\"javascript:loadcontrol('login.ashx');\" >登录</a>&nbsp;";

var AxmlDom = new Object();
AxmlDom.reqList = [];

function createX()
{
//创建一个xmlhttp
try
{
xmlDom = new ActiveXObject("Msxml2.XMLHTTP"); 

catch (E)
{
try
{
xmlDom = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
     xmlDom = new XMLHttpRequest(); //兼容非ie浏览器,直接创建XMLHTTP对象

}
}
return xmlDom;
}
createX();
AxmlDom.Post=function(url,data,  callback, callback2) {
 var req=createX(); 
req.onreadystatechange = function() 
{
if (req.readyState == 4) // only if req shows "loaded"
{
if (req.status < 400)// only if "OK"
 {
    if(callback)
    {
                 callback(req) ;
     $("loadingflag").style.display ='none';
    }
 }
else 
{
         if (callback2)
         {
        callback2(req);
        $("loadingflag").style.display ='none';
        }
}
}
}
req.open("POST", url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(data);
AxmlDom.reqList.push(req);
$("loadingflag").style.display ='';
return req;
}


//加载用户控件的工具方法
function loadcontrol(controlname)
{
var d = new Date();
var strURL = controlname+"?type=0&guid=" + d.getTime();
xmlDom.Open("get",strURL , true);
xmlDom.onreadystatechange = function(){
  if (xmlDom.readyState == 4 )
  if(xmlDom.status == 200)
{
$("main").innerHTML=xmlDom.responseText;
$("loadingflag").style.display ='none';
}
else
$("loadingflag").innerHTML = "向服务器请求数据时出现错误!"
  };
xmlDom.Send(xmlDom);
$("loadingflag").style.display ='';
}

//验证密码是否符合规则
function j_password()
{
var password = $("Txt_Password").value;
if (password.length < 6 || password.length > 12)//密码长度是否符合规则
{
$("PwdError").innerHTML = "<font color=\"red\">密码长度不正确。<font>";
canSubmit = false;
return;
}

if ($("Txt_UserName").value == password)//用户名和密码不能相同
{
$("PwdError").innerHTML = "<font color=\"red\">为了您的安全,用户名与密码不能一致,请使用新的密码<font>";
canSubmit = false;
return;
}

var reg = "\\W";
if(password.match(reg))//密码是否出现英文或数字之外的字符
{
$("PwdError").innerHTML = "<font color=\"red\">密码只能是英文或者数字!<font>";
canSubmit = false;
return;
}

canSubmit = true;//都符合条件,验证通过
$("PwdError").innerHTML = "";
}
//判断两次输入的密码是否一致
function j_password1()
{
var password = $("Txt_Password_AG").value;
if(password != $("Txt_Password").value)//两次输入的密码不相同,出现错误提示
{
$("PwdError2").innerHTML = "<font color=\"red\">两次输入的密码不一致,请重新输入!<font>";
$("Txt_Password_AG").value = "";
canSubmit = false;
return;
}
//两次输入的密码相同,校验通过。
$("PwdError2").innerHTML = "";
canSubmit = true;
}

#5


谢谢,正在学习中, 我的邮箱是maomaohappyfei@qq.com还希望大家多多帮助,不过有个问题问一下,这个论坛怎么给人加分啊。正在郁闷中。嘿嘿!

#6


mark

#7


O_O

#8


好!
JF

#9


学习了.

#10


O_O

 ~_~ 

  ~_~

#11


我也要
ilrf@163.com
谢谢wwwpcseanet