mio4 Java Web & Web Security

前端基础(7):AJAX

2018-10-14
mio4

阅读:


(一)AJAX

(1)简介

  • AJAX(Asynchronous Javascript And XML)
    • 异步Javascript和XML
    • 功能:在不更新页面的情况下,对网页的局部信息进行更新
    • 比如:在注册用户时,遇到刚输入完成用户名,就提醒这个用户名已经被占用的情况;或者搜索引擎的提示功能,以及类似的实现

(2)使用步骤

  • AJAX在Javascript脚本中使用,一个基本的demo:
  		//1.创建核心对象
        xmlhttp = null;
        if(window.XMLHttpRequest){
            //firefox chrome
            xmlhttp = new XMLHttpRequest();
        } else if(window.ActiveXObject){
            //ie 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        //2.编写回调函数
		 xmlhttp.onreadystatechange=function(){
				if(xmlhttp.readyState==4 && xmlhttp.status==200){
					alert(xmlhttp.responseText);
				}
			}

        //3. 设置请求的方式和请求路径
        xmlhttp.open("get","${pageContext.request.contextPath}/ajax1");

        //4. 发送请求
        xmlhttp.send();
  • 创建核心对象
    • 根据不同的浏览器创建不同的xmlhttp对象

(3)AJAX-API

  • 属性
  • onreadystatechange:检测到readyState状态改变的时候调用
  • readyState:ajax核心对象的状态
    • 0:核心对象创建
    • 1:调用了open方法
    • 2:调用了send方法
    • 3:部分相应已经生成
    • 4:相应已经完成

(4)jQuery下的AJAX

参考:http://www.runoob.com/jquery/jquery-ref-ajax.html

  • jQuery AJAX方法
    • $.get(url,params,function(){}) 使用AJAX的HTTP GET从服务器加载数据
    • $.post(url,params,function(){}) 使用AJAX的HTTP POST从服务器加载数据
    • $.ajax({name:value, name:value, … }) 用于执行AJAX方法

(二)AJAX检查用户名占用

  • 需求:注册时用户在文本框上输入内容,失去焦点之后发送AJAX请求到后台
    • 将查询的结果发回前台,如果用户名存在则不能提交表单
    • 1.直接使用AJAX实现
    • 2.使用JQuery下的AJAX方法实现
  • jQuery实现:
<!--失去焦点之后检测用户名是否被占用-->
<script type="text/javascript">
    $(function(){
        $("input[name='username']").blur(function(){
            //获取输入的值
            var $username = $(this).val();
            //alert($username);
            $.get("/BasicDemo14/checkUsername4Ajax",{"username":$username},function(d){
                //alert(d);
                if(d == 1){
                    document.getElementById("username_msg").innerHTML="<font color='green'>用户名可以使用</font>";
                } else if(d == 0){ //不能用
                    document.getElementById("username_msg").innerHTML="<font color='red'>用户名不能使用</font>";
                    document.getElementById("submitId").disabled = true;
                }
            });
        });
    });
</script>

(三)模拟搜索引擎

  • 使用搜索引擎的时候输入内容时,按键弹起时,显示提示内容
    • 使用jQuery下的AJAX实现
    • 使用keyup函数
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
        //文本框keyup时发送AJAX
        $(function(){
            $("#tid").keyup(function(){
                //alert("!!!");
               var $value = $(this).val(); //获取#tid文本框的值
               if($value != null && $value.length != 0){
                   //每次清空div
                   $("#did").html("");

                   $.post("/BasicDemo14/searchKw","kw="+$value,function(d){ //这里向Servlet提交参数
                      var arr = d.split(",");
                      $(arr).each(function(){
                          //alert(this);
                          $("#did").append($("<div>" + this + "</div>"));
                      });
                      $("#did").show();
                   });
               } else{
                    $("#did").hide();
               }
            });
        });
    </script>

Comments

Content