AJAX04-应用(用户名是否已被注册、响应内容为xml)

应用1: 用户名是否已被注册

步骤:
1、编写页面:ajax.jsp

  • 给出注册表单页面
  • 给出用户文本框添加onblur事件的监听
  • 获取文本框内容,通过ajax发送给服务器,得到响应结果;
  • 如果为0,则什么都不做;
<head>
<script type="text/javascript">
   //创建异步对象
   function createXMLHttpRequest(){
    try {
        return new XMLHttpRequest();
    }catch(){
       try {
           return new ActiveXobject("Msxml2.XMLHTTP");
       }catch(e){
          try{
              return new ActiveXobject("Microsoft.XMLHTTP");
          }catch(e){
             alert("用的啥浏览器???");
             throw e;
          }
       }
     }
  }
   window.onland =function (){ //文档加载完毕之后执行
       var tUserName=document.ElementById("usernameId");
       tUserName.onblur=function(){//给按钮的点击事件注册监听
       //第一步:得到异步对象
       var xmlHttp = createXMLHttpRequest();
       //第二步:打开与服务器连接,3个参数:请求方式、url、异步请求
       xmlHttp.open("POST","<c:url value="/Servelt"/>",true);
       //***********************************************
       //修改open方法,设置请求头
       xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
       //第三步:发送请求
       xmlHttp.send("username="+tUserName.value);//get请求没有请求体,但也要给出null
       //第四步:设置监听
       xmlHttp.onreadystatechange =function (){
            if(xmlHttp.readyState ==4 && xmlHttp.status =200){
            //获取服务器的响应结束
            var text = xmlHttp.responseText();
            var span=document.ElementById("errorSpan");
                if("1"==text ){
                    span.innerHtml ="该用已注册!";           
                }else{
                    span.innerHtml ="";           
                }
            }
          };
       };
   };
 </script>
 </head>
 <body>
     <h1>演示用户信息是否已注册</h1>
     <form action="" method="post">
         用户名:<input type="text" name="username" id="usernameID"/> <span id="errorSpan"></Span>
         <br/>
         密  码:<input type="text" name="password" id="passwordID"/> 
         <br/>
         <input type="submit" value="提交"/> 
   </form>
  </body>

2、编写servelt:Servelt.java

  • 获取客户端传递的用户参数信息
  • 判断是否为用户名是否为123456
  • 如果是返回1,否则返回0
public class Servelt extends HttpServelt {
      public void doPOST(HttpServeltRequest request,HttpServeltResponse response)  throws Exception{
          //防止乱码************************
          response.setContentType("text/html;charest=utf-8");
          response.setCharacterEncoding("UTF-8");
          String userName=request.getParameter("username");//获取请求参数
          if(userName.equals("123456")){
              response.getWrtter().print("1");
          }else{
              response.getWrtter().print("0");
          }
      }
}

应用2:响应内容为xml

1、编写页面ajax.jsp

<head>
<script type="text/javascript">
   //创建异步对象
   function createXMLHttpRequest(){
    try {
        return new XMLHttpRequest();
    }catch(){
       try {
           return new ActiveXobject("Msxml2.XMLHTTP");
       }catch(e){
          try{
              return new ActiveXobject("Microsoft.XMLHTTP");
          }catch(e){
             alert("用的啥浏览器???");
             throw e;
          }
       }
     }
  }
   window.onland =function (){ //文档加载完毕之后执行
       var bta =document.getElenmentById("bta");
       bta.onclick =function(){//给按钮的点击事件注册监听
       //第一步:得到异步对象
       var xmlHttp = createXMLHttpRequest();
       //第二步:打开与服务器连接,3个参数:请求方式、url、异步请求
       xmlHttp.open("GET","<c:url value="/Servelt"/>",true);      
       //第三步:发送请求
       xmlHttp.send(null;//get请求没有请求体,但也要给出null
       //第四步:设置监听
       xmlHttp.onreadystatechange =function (){
            if(xmlHttp.readyState ==4 && xmlHttp.status =200){
            //获取服务器的响应结束
            var doc= xmlHttp.responseXML();
            //查询文档下名为student的元素,得到数组,再去下标为0的元素;
            var ele=doc.getElementByTagName("student")[0];
            //获取名为number的元素属性值
            var number=ele.getAttribute("number");
            //*********浏览器兼容性问题**********
            var name;
            var age;
            var sex;
            if(windows.addEventListener){//其他浏览器
               name=ele.getElementByTagName("name")[0].textContent;
               age=ele.getElementByTagName("age")[0].textContent;
               sex=ele.getElementByTagName("sex")[0].textContent;
            }else{//IE浏览器
               name=ele.getElementByTagName("name")[0].text;
               age=ele.getElementByTagName("age")[0].text;
               sex=ele.getElementByTagName("sex")[0].text;
            }
            var txt="姓名:"+name+"、年龄:"+age+"、性别"+sex;
            document.getElementById("h1").innerHTML=txt;
            }
          };
       };
   };
 </script>
 </head>
 <body>
    <button id="bta">点击这里</button>
   <h1 id="h1"></h1>
  </body>

2、编写servelt:Servelt.java

public class Servelt extends HttpServelt {
      public void doGet(HttpServeltRequest request,HttpServeltResponse response)  throws Exception{
      String xml="<students>"+
                 "<student number='001'>"+
                 "<name>张三</name>"+
                 "<age>18<age/>"+
                 "<sex>男<ex/>"+
                 "</student>"+
                 "</students>";
      response.setContentType("text/html;charest=utf-8");
      response.getWrtter().print(xml);
      }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是实现该功能的代码示例: HTML部分: ```html <form> <label for="username">用户名:</label> <input type="text" id="username" name="username"> <span id="username_check"></span> </form> ``` JavaScript部分: ```javascript // 获取用户名输入框 var input_username = document.getElementById('username'); // 获取提示信息元素 var username_check = document.getElementById('username_check'); // 给用户名输入框绑定失去焦点事件 input_username.addEventListener('blur', function() { // 获取当前输入的用户名 var username = input_username.value.trim(); // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 发送GET请求,获取names.xml文件 xhr.open('GET', 'names.xml', true); xhr.send(); // 处理响应结果 xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 获取XML文档对象 var xmlDoc = xhr.responseXML; // 获取所有的<name>元素 var names = xmlDoc.getElementsByTagName('name'); // 遍历<name>元素,查找是否有与当前输入用户名相同的 for (var i = 0; i < names.length; i++) { if (names[i].childNodes[0].nodeValue === username) { // 如果找到了相同的用户名,提示已经被注册 username_check.innerHTML = '该用户名已经被注册!'; return; } } // 如果没有找到相同的用户名,提示可以使用 username_check.innerHTML = '该用户名可以使用!'; } }; }); ``` 在上面的代码中,我们给用户名输入框绑定了失去焦点事件,当输入框失去焦点时,会通过ajax技术发送GET请求,获取服务器端的"names.xml"文件。然后在响应结果中,遍历XML文档中的所有<name>元素,查找是否有与当前输入用户名相同的。如果找到了相同的用户名,就提示已经被注册;否则就提示可以使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值