前台代码 <script type="text/javascript" language = "JavaScript">   
  function   checkuser(){   
  
     var name = document.getElementById("txtLoginName").value;
     if(name == "")
     {
        alert( "请填写管理员登录名!");
        return;
     }
     
     var s = '<%= checkuser("'+name+'") %>';
    
     if(s == "false")
     {
        alert( s +"___用户名已经存在!"+ name);
        return;
     }
     if(s == "true")
     {
        alert(s +"___恭喜,该用户名可以使用!" + name);
        return;
     }
  }  
  <a href="javascript:checkuser()">检测登陆名是否可用</a>后台方法被调用方法 public string checkuser(string name)
    {
        string bo = "bool";
        int i = CheckUserName(name);
        if (i > 0)
        {
            bo = "false";
        }
        else
        {
            bo = "true";
        }
        return bo ;
    }CheckUserName为判断用户的数量 返回聚合函数
为什么不能用呢
我感觉每次都是true,到底是什么原因呢
请告诉帮忙给我改一改

解决方案 »

  1.   

     var s = '<%= checkuser("'+name+'") %>';
    你這樣寫的話不會每次都去調用后臺代碼的
    只是在頁面初始化加載的時候才調用一次而已
      

  2.   

    var s = '<%= checkuser("'+name+'") %>';
    这样的方式能调用后台cs的方法,不会吧.那AJAX不就很奇怪了.
      

  3.   

    这样也行?一般检查用户名都是AJAX吧。
    var xmlHttp = false;
    //----------------------------------------------------------检验用户名时候可以注册
    function checkUserName()
    {
        // Check whether there's text in tbUserName
        var tbUserName = document.getElementById('tbUserName');
        var checkResult = document.getElementById("checkResult");
        checkResult.innerHTML = "<img src='images/Web/ajax.gif'  height='13px' width='13px'/>"
        var b = document.getElementById("ImageButton_Regist");
        if (tbUserName.value == "")
        {
            b.disabled = true;
            checkResult.innerHTML = "请输入账号";
            return;
        }
        else if (tbUserName.value.length < 3 && tbUserName.value.length > 0)
        {
            b.disabled = true;
            checkResult = document.getElementById("checkResult");
            checkResult.innerHTML = "你输入的账号长度太短";
            return;
        }
        b.disabled = false;    // Create XMLHttpRequest object
        try
        {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e2)
            {
                xmlHttp = false;
            }
        }    if (!xmlHttp && typeof XMLHttpRequest != 'undefined')
        {
            xmlHttp = new XMLHttpRequest();
        }
        // Build the URL to connect to
        var url = "./AJAX/CheckUserNameService.aspx?User_Name=" + tbUserName.value;    // Open a connection to the server
        xmlHttp.open("GET", url, true);    // Setup a function for the server to run when it's done
        xmlHttp.onreadystatechange = callBack_CheckUserName;    // Send the request
        xmlHttp.send(null);}function callBack_CheckUserName()
    {
        if (xmlHttp.readyState == 4)
        {
            var message;
            var isValid = xmlHttp.responseText;
            var checkResult = document.getElementById("checkResult");
            if (isValid == "true")
            {
                message = "<img src='images/Web/checked.png' height='13px' width='13px' />";
            }
            else
            {
                var b = document.getElementById("ImageButton_Regist");
                b.disabled = true;
                message = "该账号已经注册过,请重新输入新的账号。";
            }
            checkResult.innerHTML = message;
        }
    }
    CheckUserNameService.aspx<%@ Page Language="C#" %><%@ Import Namespace="System.Data.OleDb" %><script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            // get the candidate user name.
            string candidateUserName = Request["User_Name"];
            // validate
            bool isValid = false;
            DBClass db = new DBClass();
            db.Conn.Open();
            string str = "select count(*) from [tUser] where [User_Name]='" + candidateUserName + "'";
            OleDbCommand Comm = new OleDbCommand(str, db.Conn);
            int result = Convert.ToInt32(Comm.ExecuteScalar());        if (result<=0)
            {
                isValid = true;
            }
            db.Conn.Close();        // send out result
            Response.Clear();
            Response.Write(isValid ? "true" : "false");
            Response.Flush();    }
    </script>前台调用代码
    <asp:TextBox ID="tbUserName" runat="server" onblur="checkUserName()" MaxLength="20"
                                        BorderColor="Black" BorderWidth="1px"></asp:TextBox>
                                    <span id="checkResult" style="font-size: 9pt; font-family: 宋体; color: red;"></span>
      

  4.   

      function getBool(divertURL)
      {
         var s = '<%= isDelete() %>';
         if(s == "true")
         {
            if(confirm("删除后不能恢复,确认删除?"))   
            {   
                window.location   =   divertURL   
            } 
         }
         else
         {
            alert("对不起!您无操作此功能的权限,如有需要请您联系人事部为您开通!");
         }
      }
    <a href="javascript:getBool('delPost.aspx?id=<%# Eval("funpID") %>')">删除</a>为什么我这种就可以用呢 ?
      

  5.   

    这样是实现不了的  用AJAX吧 
    1.在工程里添加引用:Ajax.dll
    2.在webconfig里加入:
    <httpHandlers>
    <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
        </httpHandlers>
    3.在你这页的CS的Page_Load事件里加入
    Ajax.Utility.RegisterTypeForAjax(typeof(Common));------Commmon为你那个CS方法所在的类
    然后你在Common类里写你要在前台调用的那方法
    4.然后在JS里直接调用方法:
    例如:function getcity(p)
    {
    var obj = document.all("cityddl");
    obj.length = 0;
    obj.options.add(new Option("未知","未知"));
    if (p != "-1")
    {
    var ds = Common.GetCitylist(p).value;--------------------这个方法就是CS里写的
    if(typeof(ds) == "object" && ds != null)
    {
    for(var i=0; i<ds.Rows.length; i++)
    obj.options.add(new Option(ds.Rows[i].city,ds.Rows[i].code));
    }
    }
    }
      

  6.   

    你这是前台调用JS事件当然可以  只不过是取了CS里的一个变量 
      

  7.   

    var s = '<%= checkuser("'+name+'") %>';你这样申明只是给变量s一个值而已,不会去调用到这个方法的.
      

  8.   

    但是我的isDelete()也是后台的一个方法啊 这个方法里也是需要读数据库的啊
      

  9.   

    用个短点看看
    var s = '<%= checkuser("'+name+'") %>';
    看下这里的值
    在IE选项高级里启用脚本调试
      

  10.   

    后臺代碼加上 
    using System.Web.Services;
    [WebMethod]
    public static string CheckValue(string value1)
    {
        //處理過程
    }
    前臺加上
    <script type="text/javascript">
            //JavaScript調用.Net后臺
            function JsCallCSharp()
            {
                PageMethods.GetString(form1.TextBox1.value, onGetStringed);
            }
            
            function onGetStringed(result)
            {
                alert(result)
            }
        </script>
      

  11.   

    上邊寫錯了一點
    <script type="text/javascript"> 
            //JavaScript調用.Net后臺 
            function JsCallCSharp() 
            { 
                PageMethods.CheckValue(form1.TextBox1.value, onGetStringed); 
            } 
            
            function onGetStringed(result) 
            { 
                alert(result) 
            } 
        </script>
      

  12.   

    這樣寫你應該知道了后臺
    using System.Web.Services;
        [WebMethod]
        public string checkuser(string name)
        {
            string bo = "bool";
            int i = CheckUserName(name);
            if (i > 0)
            {
                bo = "false";
            }
            else
            {
                bo = "true";
            }
            return bo ;
        }前臺
    <script type="text/javascript"> 
            //JavaScript調用.Net后臺 
            function checkuser() 
            { 
                PageMethods.checkuser("name", ReturnMethod); 
            } 
            
            function ReturnMethod(result) 
            { 
                alert(result);
            } 
        </script>
      

  13.   

    楼主犯的错误很低级, var s = '<%= checkuser("'+name+'") %>';
    这个name是在客户端的,<%%>是运行在服务器端的。只能用AJAX。如果不熟,就用Jquery,这个简单点。