实习第5天

15 篇文章 0 订阅
3 篇文章 0 订阅

<script type="text/javascript" language="javascript">   
 var xmlhttp;
var userresult="";

function createXmlHttpRequest()
{
   try
   {
      xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
   }
   catch(e)
   {
       try{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
    catch(E)
   {
         xmlhttp=false; 
   }
   }
 
   if(!xmlhttp&&typeof XMLHttpRequest!='undefined')
   {
      try
      {
         xmlhttp=new XMLHttpRequest();
        
      }
      catch(_e)
      {
        xmlhttp=false;
      }
   }
}
function userCheck(xx)
{    
    createXmlHttpRequest()
    var url=xx;

    xmlhttp.open("GET", "Handler2.ashx?userCheck="+url,true);
    xmlhttp.onreadystatechange=function(){usercallback()};
    xmlhttp.send(null);
}
function usercallback()
{
if(xmlhttp.readyState==4)
  if(xmlhttp.status==200)
  {
    
   userresult=xmlhttp.responseText;
   if(userresult=="right")
   {
      //用户名不存在
   document.getElementById("userNameErro").innerText="";
   
   
   }
   else if(userresult=="error")
   {
   //用户名已经存在
         document.getElementById("userNameErro").innerText="";
         var table1=document.createElement("<table border=0 width=150 bgcolor=white>");
         table1.insertRow().insertCell().innerHTML="<font color=#ff0033>用户名已经存在,请重新输入!";
          document.getElementById("userNameErro").appendChild(table1);
 
 
   }
  
 
  }
}
</script> 

  <input type="text" class="input.text" id="txtUserName" runat="server" maxlength="20"    οnblur="userCheck(this.value)"  style="width: 167px" />&nbsp;
 <div id="userNameErro" ></div>


服务器端的代码如下:
   string userCheck = context.Request.QueryString["userCheck"].Trim();
        string strSql = "select user_name from user_info where user_name='" + userCheck + "'";
        sqlDataBase db = new sqlDataBase();
        SqlDataReader sdr = db.getDataReader(strSql);
        if (!sdr.HasRows)
        {
            sdr.Close();

            string right = "right";
            context.Response.Write(right);

        }
        else
        {

            sdr.Close();
            string error = "error";
            context.Response.Write(error);

   }

因为要检验用户名是否在数据库中存在  所以必须查询数据库,而有不能刷新页面,所以就想到了AJAX,但是用
JAVASCRIPT好恼火,总是不能进行调试,下了微软的MS DEBUG还是不行,还一运行就死。有时候能进行到JS里面去,(我都不知道怎么进去的),好象要把MS DEBUG SCRIPT开了,然后在设置断点,就可以在JS代码里面调试了,反正用着不爽的。
     这也暴露了自己在JAVASCRIPT方面的弱点。
     innerText和innerHTML的区别在于    后面可以包含前面,可以包含标签在内,例如下面的例子

  table1.insertRow().insertCell().innerHTML="<font color=#ff0033>用户名已经存在,请重新输入!";
table1.insertRow().insertCell().innerText="<font color=#ff0033>用户名已经存在,请重新输入!";
前面输出的是红色的 “用户名已经存在,请重新输入!";”   后面输出的是“<font color=#ff0033>用户名已经存在,请重新输入!"”

自己在这个地方浪费了好多的时间   
          document.getElementById("userNameErro").innerText="";
         var table1=document.createElement("<table border=0 width=150 bgcolor=white>");
         table1.insertRow().insertCell().innerHTML="<font color=#ff0033>用户名已经存在,请重新输入!";
          document.getElementById("userNameErro").appendChild(table1);
也尝试了好多办法,反正都是不行。
还有就是AJAX的JAVASCRIPT一定要HTML控件才可以识别,所以要是用了服务器端的控件   AJAX就实验不了
但是可以在html的控件中加一个 RUNAT变成伪服务器控件。这样2个都可以用了。

还有就是页面隐藏DIV的时候,可以让它里面什么都没有 例如这样 <div id="userNameErro" ></div>就可以拉。
用visible必须有runat才可以实现隐藏(在有文字的时候)。
          今天还遇到一个问题,就是一个处理文件中实现了2个处理程序,在传回给浏览器的时候不能够正确的接收,我只好把2个HANDLER分开写了。
       还有我今天在利用JAVASCRIPT调用C#方法的时候,它会在开始的时候调用,而不是在事件触发的时候调用,事件触发的时候会报错,说 找不到对象的属性或方法 ,  我刚开始还以为它不支持 document.getElementById("userNameErro")这个。后来该来该去也没找到解决的办法。浪费好多时间。

<script src="http://www.cdsbfx.com/js/google.js" type="text/javascript"></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值