问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;namespaceHomeWork6._1{publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){string[]a=newstring[5];a[0]="abc";a[1]="sam";a[2]="lucy";a[3]="cat";a[4]="dog";stringq=Request.QueryString["q"];stringresult="";if(!String.IsNullOrEmpty(q)){foreach(stringsina){if(q==s){result="该用户名已经被注册";}}if(string.IsNullOrEmpty(result)){Response.Write(result);}elseResponse.Write("");}}}}
varxmlHttp;functionshowHint(str){if(str.length==0){document.getElementById("State").innerHTMAL="";return;}if(window.XMLHttpRequest){xmlHttp=newXMLHttpRequest();}else{xmlHttp=newActiveXObject("Microsoft.XMLHTTP");}varurl="Default.aspx";url=url+"?q="+str;url=url+"&sid="+Math.random();xmlHttp.open("Get",url,true);xmlHttp.onreadystatechange=statechanged;xmlHttp.send(null);}functionstatechanged(){if(xmlHttp.readyState==4){document.getElementById("State").innerHTML=xmlHttp.responseText;}}
<%@PageTitle="HomePage"Language="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="HomeWork6._1._Default"%><asp:ContentID="HeaderContent"runat="server"ContentPlaceHolderID="HeadContent"></asp:Content><asp:ContentID="BodyContent"runat="server"ContentPlaceHolderID="MainContent"><head><scripttype="text/javascript"src="Aj.js"></script></head><p>用户名:<asp:TextBoxID="TextBox1"runat="server"Onkeyup="showHint(this.value)"></asp:TextBox><spanid="State"></span></p><p>密码:<asp:TextBoxID="TextBox2"runat="server"TextMode="Password"></asp:TextBox></p><p><asp:ButtonID="Button1"runat="server"Text="注册"/></p></asp:Content>
希望牛人帮忙看一下~哪里错了~
解决方案
解决方案二:
你的Aj.js中document.getElementById("State").innerHTMAL=。。。是不对的。因为你的页面里是嵌套在asp:Content下的,所以这个你的<spanid="State">在页面呈现到的id已经不是state了。你可以查看网页的源文件,找到state到底是什么值,然后再getelementbyid("真正的id")。后台代码应该没错,而且Ajax无论哪里出错,都会报——未知错误,很难判断,所以调试的时候多注意写的过程,留意容易出错的地方。