CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  Ajax

午夜发贴:asp.net+ajax无刷新验证用户名源码出现的一点小问题

楼主wdx1632(lg)2006-12-27 01:05:33 在 Web 开发 / Ajax 提问

Reg.aspx.CS:  
                  tbUserName.Attributes.Add("onblur",   "CheckUser();");  
  ----------------------------------------------------------------  
  Reg.aspx:  
  <script   language="javascript">  
  function   CheckUser()  
  {  
                    var   url   =   "Ajax.aspx?pm="+document.getElementById("tbUserName").value+"";    
                    if   (window.XMLHttpRequest)   {    
                                    req   =   new   XMLHttpRequest();    
                    }else   if   (window.ActiveXObject)   {    
                                    req   =   new   ActiveXObject("Microsoft.XMLHTTP");    
                    }  
                                    req.open("get",url,   true);    
                                    req.onreadystatechange   =   HandleStateChange;  
                                    req.send(null);    
  }  
  function   HandleStateChange()  
  {  
      if   (req.readyState   ==   4)  
            {  
                if   (req.status   ==   200)  
                      {  
                                    document.getElementById("CheckInfo").innerHTML=req.responseText;  
   
                        }  
              }  
  }  
  </script>  
  --------------------------------------------------------------  
  Ajax.aspx.CS:  
          protected   void   Page_Load(object   sender,   EventArgs   e)  
          {  
                  string   pm   =   Request.QueryString["pm"];  
                  string   infos   =   "";  
                  Response.ContentType   =   "text/plain";  
   
                  try  
                  {  
                          if   (pm   ==   string.Empty)  
                          {  
                                  infos   =   "用户名未填写";  
                                  Response.Write(infos);  
   
                          }  
                          else  
                          {  
                                  string   sql   =   "select   id   from   Users   where   Username='"   +   pm   +   "'";  
                                  SqlDataReader   dr   =   DBHelper.ExecuteReader(sql);  
                                  if   (dr.Read())  
                                  {  
                                          infos   =   "用户名不可用";  
                                          Response.Write(infos);  
   
                                  }  
                                  else  
                                  {  
                                          infos   =   "用户名可以使用";  
                                          Response.Write(infos);  
   
                                  }  
                          }  
                  }  
                  catch   (Exception   ec)  
                  {  
                          Response.Write(ec.Message);  
                  }  
          }  
  -------------------------------------------------------------------  
  以后代码根本得不到正确的值:req.status   ==   400,即   Bad   Request  
   
  是什么原因?! 问题点数:100、回复次数:44Top

1 楼zdyguilong(Keep Walking!)回复于 2006-12-27 09:12:13 得分 0

关注一下Top

2 楼tipboy(想做技术边缘人)回复于 2006-12-27 09:32:55 得分 0

var   url   =   "Ajax.aspx?pm="+escape(document.getElementById("tbUserName").value)+"";Top

3 楼totoz(totoz)回复于 2006-12-27 09:33:26 得分 10

Response.ContentType   =   "text/plain";  
   
  你这里为什么用   text/plain,这是无格式正文Top

4 楼totoz(totoz)回复于 2006-12-27 09:39:16 得分 0

你的PM   值是不是中文的?  
   
  Top

5 楼wdx1632(lg)回复于 2006-12-27 10:21:02 得分 0

To:tipboy(想做技术边缘人)    
  var   url   =   "Ajax.aspx?pm="+escape(document.getElementById("tbUserName").value)+"";  
  我的那个没有问题,我已经测试过.  
   
  To:totoz(totoz)  
  那用哪个呢????  
   
  To:totoz(totoz)    
  是中文的!!  
   
  希望能给个完整的解决方案.多谢!Top

6 楼wdx1632(lg)回复于 2006-12-27 10:27:14 得分 0

现在返回值已经变为字符了.只是仍然出现:     HTTP   错误   400   -   Bad   RequestTop

7 楼totoz(totoz)回复于 2006-12-27 11:09:55 得分 10

你返回的东西只是用户名吧?  
   
  那去掉     Response.ContentType   =   "text/plain";   这句试下Top

8 楼totoz(totoz)回复于 2006-12-27 11:11:56 得分 10

另外把你那个Ajax.aspx   前台  
   
  从     <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>       开始的代码全部是删除  
   
   
  只剩下第一行"<%@   Page   language="c#"   Codebehind="Ajax.aspx.cs""   .....     这句就行  
  Top

9 楼wdx1632(lg)回复于 2006-12-27 11:37:56 得分 0

还是出现:  
  HTTP   错误   400   -   Bad   RequestTop

10 楼totoz(totoz)回复于 2006-12-27 11:51:00 得分 30

 
   
  function   createxmlhttprequest()  
  {  
  var   xmlhttp=false;  
  try  
  {  
  xmlhttp=new   ActiveXObject('Msxm12.XMLHTTP');  
  }  
  catch(e)  
  {  
  try  
  {  
  xmlhttp=new   ActiveXObject('Microsoft.XMLHTTP');  
  }  
  catch(e)  
  {  
  try  
  {  
  xmlhttp=new   XmlHttpRequest();  
  }  
  catch(e)  
  {  
  }  
  }  
  }  
  return   xmlhttp;  
  }  
  function   CheckUser()  
  {  
          var   xmlhttp=createxmlhttprequest();  
          var   username=document.getElementById('tbUserName');  
          xmlhttp.open('get','Ajax.aspx?pm='+username.value);  
          xmlhttp.onreadystatechange=function()  
          {  
                  if(xmlhttp.readyState==4)  
                  {  
                   
                          if(xmlhttp.status==200)  
                          {  
                              document.getElementById("CheckInfo").innerHTML=req.responseText;  
                          }  
                  }  
          }  
          xmlhttp.send(null);  
  }Top

11 楼totoz(totoz)回复于 2006-12-27 11:53:10 得分 10

写错了  
  这句   document.getElementById("CheckInfo").innerHTML=req.responseText;  
   
  换成   document.getElementById("CheckInfo").innerHTML=xmlhttp.responseText;  
  Top

12 楼wdx1632(lg)回复于 2006-12-27 12:03:58 得分 0

To:totoz(totoz)  
  感谢大哥给我指点.可是现在没有任何反应.当我把  
    if(xmlhttp.status==200)---->   if(xmlhttp.status!=200)  
   
  出现:HTTP   错误   400   -   Bad   Request  
   
  现在是不是可以肯定是AJAX.aspx.cs的问题了?如果他有问题.那么应该怎么来实现呢?  
   
  Top

13 楼totoz(totoz)回复于 2006-12-27 12:57:10 得分 10

protected   void   Page_Load(object   sender,   EventArgs   e)  
   
  改成   private   void   Page_Load(object   sender,   System.EventArgs   e)   试下  
   
  另外你看下你的SQL语句有没有执行?Top

14 楼wdx1632(lg)回复于 2006-12-27 13:24:25 得分 0

还是         HTTP   错误   400   -   Bad   Request         sql语句可以执行.Top

15 楼totoz(totoz)回复于 2006-12-27 13:29:29 得分 0

换成下面这个,看下是哪步出问题了,400错误一般是因为错误的语法导致无法理解请求信息  
   
  if(xmlhttp.readyState   ==   1){  
  document.getElementById("CheckInfo").innerHTML   =   "开始请求"  
  }  
  else   if(xmlhttp.readyState   ==   2){  
  document.getElementById("CheckInfo").innerHTML   =   "正在请求"  
  }  
  else   if(xmlhttp.readyState   ==   3){  
  document.getElementById("CheckInfo").innerHTML   =   "接受收据"  
   
  }  
  else     if(xmlhttp.readyState==4)  
                  {Top

16 楼wdx1632(lg)回复于 2006-12-27 13:48:25 得分 0

已经试了.xmlhttp.readyState==4   执行.     就是说已经完成了.但是   if(xmlhttp.status==200)   不会执行!Top

17 楼totoz(totoz)回复于 2006-12-27 13:52:16 得分 10

你那个Ajax.aspx   前台的代码都删光了不?   只剩最上面一行  
   
  .CS里面的Response.Write(infos);   有没有Write数据出来?Top

18 楼zdyguilong(Keep Walking!)回复于 2006-12-27 13:56:35 得分 0

继续关注Top

19 楼wdx1632(lg)回复于 2006-12-27 14:03:18 得分 0

Ajax.aspx   前台的代码已经删除干净了.Response.Write(infos);   我已经对此页进行了调用.可以根据程序正常显示出来.Top

20 楼totoz(totoz)回复于 2006-12-27 14:12:44 得分 10

...   所有正常,那就是返回数据的时候获取失败了?  
   
  你Web.config里面的requestEncoding是什么,改为gb2312看下Top

21 楼totoz(totoz)回复于 2006-12-27 14:14:21 得分 0

requestEncoding和responseEncoding     都改下Top

22 楼wdx1632(lg)回复于 2006-12-27 14:19:24 得分 0

已改..问题依旧:  
   
  HTTP   错误   400   -   Bad   RequestTop

23 楼totoz(totoz)回复于 2006-12-27 14:32:47 得分 0

我本地测试成功  
   
   
  string   pm   =   Request["username"].ToString();  
  string   infos   =   "";  
  try  
  {  
  if   (pm   ==   string.Empty)  
  {  
  infos   =   "用户名未填写";          
  }  
  else  
  {  
  string   sql   =   "select   id   from   Users   where   Username='"   +   pm   +   "'";  
  SqlDataReader   dr   =   DBHelper.ExecuteReader(sql);  
  if   (dr.Read())  
  {  
  infos   =   "用户名不可用";  
  }  
  else  
  {  
  infos   =   "用户名可以使用";  
     
  }  
  }  
  }  
  catch   (Exception   ec)  
  {  
  infos   =   ec.Message;  
  }  
  Response.Write(infos);Top

24 楼wdx1632(lg)回复于 2006-12-27 14:43:15 得分 0

楼上大哥,问题还是那样.  
  xmlHttp.statusText="Bad   Request"Top

25 楼wdx1632(lg)回复于 2006-12-27 14:57:19 得分 0

var   username=document.getElementById('tbUserName').value;  
  var   url="Ajax.aspx?pm="+username+"";  
  //-------------------------  
  window.open(url);  
  //-------------------------  
  xmlHttp.open('get',url,true);  
   
  用   window.open()   弹出窗口可以看到,参数已经传递过来.页面上显示:用户名可以使用  
   
  可是现在问题仍然是:HTTP   错误   400   -   Bad   Request  
  Top

26 楼totoz(totoz)回复于 2006-12-27 15:07:27 得分 0

....我这里调试这个会正常显示的  
   
  你把xmlHttp.open('get',url,true);  
     
  换成xmlHttp.open('get',url,false);看下  
  Top

27 楼totoz(totoz)回复于 2006-12-27 15:08:39 得分 0

你是2.0     还是1.1的?Top

28 楼wdx1632(lg)回复于 2006-12-27 15:08:50 得分 0

2.0Top

29 楼totoz(totoz)回复于 2006-12-27 15:20:58 得分 0

我是   1.1的    
   
  2.0不太熟悉     不好意思Top

30 楼wdx1632(lg)回复于 2006-12-27 15:25:30 得分 0

无论如何.很感谢|***totoz(totoz)***|,如何今天解决不了.就结帖了.Top

31 楼wdx1632(lg)回复于 2006-12-27 15:41:49 得分 0

努力顶一下Top

32 楼myTJProgrammer()回复于 2006-12-27 15:53:04 得分 0

url="Ajax.aspx?pm='"+username+"'";这样可以吗Top

33 楼zdyguilong(Keep Walking!)回复于 2006-12-27 16:12:42 得分 0

lz一定要搞定阿,前一段时间我也想做这种效果,可没有成功……Top

34 楼wdx1632(lg)回复于 2006-12-27 16:13:19 得分 0

和这个没关系.因为我已经进行了判断.上面的函数:window.open(url)Top

35 楼wdx1632(lg)回复于 2006-12-27 17:00:38 得分 0

如果有大侠光临,请看题目.多谢关注.Top

36 楼test33(隐姓埋名)回复于 2006-12-27 20:16:04 得分 0

关注`Top

37 楼cat_hsfz(我的新Blog在http://cathsfz.cnblogs.com)回复于 2006-12-27 23:54:07 得分 0

你用Fiddler或者HttpWatch监听以下HTTP通讯,就知道到底是不是bad   request,bad在哪里,哪方的代码该负责任咯。Top

38 楼wdx1632(lg)回复于 2006-12-28 10:40:17 得分 0

太高深了.不过.我会试一下的.Top

39 楼wdx1632(lg)回复于 2006-12-28 11:22:01 得分 0

Method   Result         Type                       URL  
    GET           400       text/html   http://localhost:1377/  
   
  以上是HttpWatch监听的数据Top

40 楼wdx1632(lg)回复于 2006-12-28 11:26:32 得分 0

保存的XML文件内容是:  
   
  <?xml   version="1.0"   encoding="UTF-8"   ?>    
      <log   xmlns="http://simtec.ltd.uk/xml/log/3.2"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://simtec.ltd.uk/xml/log/3.2   http://www.simtec.ltd.uk/xml/log/3.2/log.xsd"   />Top

41 楼zdyguilong(Keep Walking!)回复于 2006-12-28 11:29:51 得分 0

顶Top

42 楼wdx1632(lg)回复于 2006-12-28 17:11:43 得分 0

兄弟们,我暂不结帖了.正在用另一种方法做.如果成功.我贴出来.再结贴.Top

43 楼zdyguilong(Keep Walking!)回复于 2006-12-29 11:11:29 得分 0

顶Top

44 楼zdyguilong(Keep Walking!)回复于 2006-12-30 20:17:47 得分 0

楼主,我研究出来了Top

相关问题

关键词

得分解答快速导航

  • 帖主:wdx1632
  • totoz
  • totoz
  • totoz
  • totoz
  • totoz
  • totoz
  • totoz
  • totoz

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo