public  App_UserAccountRequestDAO accountDao = new App_UserAccountRequestDAO();
 function checkUser() {            var user = document.getElementById("txt_User").value;
            var temp = '<%= accountDao.IsExistUser("'+user+'")%>';            if (temp) {
                document.getElementById("div_Warning").innerHTML = "Account already exist";
            }
            else {
                document.getElementById("div_Warning").innerHTML = "ok";
            }  <input id="txt_User" runat="server"  type="text" class="txtInput" onblur=“checkUser” /> <span>*</span>
这样调用数据层的bool方法 为什么一打开页面temp直接是true

解决方案 »

  1.   

    看方法名人家好像就返回bool值,再默认一调用tostring
    如果存在这个用户,就返回true,没错
      

  2.   

    你得自己判断字符串,得出是true还是false
      

  3.   

    一会儿js传值给C#,一会C#传值给js我就是想知道你拼的那个user在后台可以取到么
      

  4.   

    网页一打开F12调试就是temp="True"不知道为什么 
      

  5.   

    你的页面编译之后temp就是一个字符串。在js里做判断必须绝对等。===true
      

  6.   

    确实是这样啊 总是True 不知道如何解决
      

  7.   

    js调用后台方法?ajax就没啥意义了。直接后台弄个定义个变量,绑定到前台来判断,别调用方法
      

  8.   

    你这样做 在页面里是不会掉用到后台的方法的。
    aspx里的所有后台属性 变量 方法等等服务器的东西,都是在页面编译的时候替换成HTML文本的。
    也就是说,你执行JS的时候 <%#%> 标记里面的东西是aspx页面在服务器编译的时候就把<%= accountDao.IsExistUser("'+user+'")%>替换成所对性的HTML字符串的。当回发到客户端(浏览器)的时候,这个值就是固定的了,不会再改变。 除非页面回发到服务器,否则是不会该变'<%= accountDao.IsExistUser("'+user+'")%> 的值的。
      

  9.   

    还有,你这句话写的是有问题的
     '<%= accountDao.IsExistUser("'+user+'")%>';
    这句话其实是JS代码,跟服务器标记没任何关系, 因为。 '<%= accountDao.IsExistUser("'   是js的字符串
      user         是js的变量
      '")%>';      也是js的字符串
    然而 js里面
    if('12312321')
    其实 是 trueif(null)
    才是false.
      

  10.   

    如果我没猜错,你这里是想异步回发计算数据。
    如果对ajax不是很熟悉或者闲ajax麻烦的话,
    我建议你用updatepanel 做局部回发。
    能达到你想要的效果。在这里我还想说一下,如果想在js里调用textbox的值 只有一种方法
       var user = document.getElementById("txt_User").value;
      var temp = '<%= accountDao.IsExistUser(txt_User.Value)%>';
    请注意,这里的'<%= accountDao.IsExistUser(txt_User.Value)%>';这里的txt_User必须runat="server"
    并只会在服务器编译页面时将<%= accountDao.IsExistUser(txt_User.Value)%>的值替换成相应的值。