原生Ajax(JavaScrip的Ajax)

目录

一、原生Ajaxy应用

1.从服务器取数据

2.传参到服务器

二、Ajax细节

1.get请求中清除缓存

2.post异步请求

3.响应状态码

4.回调XML数据

三、校验插件

1.概述

2.特点

3.应用


一、原生Ajaxy应用

原生Ajax需要在JS中使用XML的请求对象发请求到服务器

1.从服务器取数据

<!-- 客户端: -->
<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改内容</button>

<script type="text/javascript">
    function loadXMLDoc(){
        //原生Ajax操作:
        var xmlHttp = new XMLHttpRequest(); //实例化xml的请求对象
        //xml请求对象发请求:参数1:请求类型   参数2:路径  参数3:异步true 同步false
        xmlHttp.open("get","load.jsp",true); //数据填充
        xmlHttp.send(); //发送请求

        //回调函数
        xmlHttp.onreadystatechange=function(){
            //readyState=4:服务器已处理完数据,响应已就绪  响应状态为200表示成功的响应
            if(xmlHttp.readyState==4&&xmlHttp.status==200){
                //responseText:获取服务器中返回的文本内容
                document.getElementById("myDiv").innerHTML=xmlHttp.responseText;
            }
        }
    }
</script>
//服务器:
<%
	response.getWriter().write("返回数据到客户端~~");
%> 

2.传参到服务器

<!-- 客户端: -->
<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改内容</button>

<script type="text/javascript">
    function loadXMLDoc(){
        //原生Ajax操作:
        var xmlHttp = new XMLHttpRequest(); //实例化xml的请求对象
        //xml请求对象发请求:参数1:请求类型   参数2:路径  参数3:异步true 同步false
        //传参格式:?name=value&name2=value2
        xmlHttp.open("get","load2.jsp?name=zs&age=30",true); //数据填充
        xmlHttp.send(); //发送请求

        //回调函数
        xmlHttp.onreadystatechange=function(){
            //readyState=4:服务器已处理完数据,响应已就绪  响应状态为200表示成功的响应
            if(xmlHttp.readyState==4&&xmlHttp.status==200){
                //responseText:获取服务器中返回的文本内容
                document.getElementById("myDiv").innerHTML=xmlHttp.responseText;
            }
        }
    }
</script>
//服务器:
<%
	String name = request.getParameter("name");
	String age  = request.getParameter("age");
	response.getWriter().write("返回数据-name="+name+";age="+age);
%>    

二、Ajax细节

缓存在Java中很重要,且有很多种缓存,例如,浏览器有缓存,服务器有缓存,数据库也有缓存; 每个地方的缓存所代表的含义都是类似的,都是提高查询效率; 但有些场景需要清除缓存,例如,获取验证码,如果有缓存,则每次发同样链接,返回同样的验证码;则有安全隐患,这种场景需要清除缓存。

1.get请求中清除缓存

通过在请求地址后加个时间:date=new Date(),这样每次请求的地址中都有一个时间是不同的,所以请求也是新的,这样就达到了清除缓存的作用

//原生Ajax操作:
var xmlHttp = new XMLHttpRequest(); //实例化xml的请求对象
//date=日期;每毫秒值都不同,意味着每次发的请求都是不同的,意味着每
//次都会取服务器获取新的新资源;相当于清除了缓存
xmlHttp.open("get","load.jsp?date="+new Date(),true); //数据填充
xmlHttp.send(); //发送请求

2.post异步请求

//post请求:post不带参数,和get不带参一样
//xmlHttp.open("post","load.jsp",true);
//xmlHttp.send();

//post带参数: 需要在send中传参数,且需要设置请求头
xmlHttp.open("post","load2.jsp",true);
//由于post传参数,可以传文本和二进制数据(上传图片);所以需要指定请求头类型
xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.send("name=zsf&age=99");

3.响应状态码

描述:当客户端发送请求后,服务器是否接收,或响应是否成功都会给客户端一个响应状态,最典型的是200或404;200表示成功状态,404则是未找到服务器;以下需要记住的状态码:

200:服务器能够接收客户端请求,且服务器处理无异常,响应回来的成功的状态码

302:重定向;也就是客户端访问服务器后;服务器中指定客户端再发一次请求到另一个页面或服务器

404:客户端未发现服务器路径;往往是路径写错了

500:客户端找到了服务器,但是服务器中代码出现异常了

4.回调XML数据

回调xml数据,意味着,可以将xml文件当成服务器数据;获取这些xml数据后,只需要解析出来想要的数据即可。

var xmlHttp = new XMLHttpRequest(); //实例化xml的请求对象
xmlHttp.open("get","student.xml",true); //数据填充
xmlHttp.send(); //发送请求

xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4&&xmlHttp.status==200){
        var doc = xmlHttp.responseXML; //获取文档对象,类似js的DOM(不常用)
        //从xml文档对象中获取name的标签
        var names = doc.getElementsByTagName("name");
        var txt = "";
        //标签有多个,所以需要循环
        for(var i=0;i<names.length;i++){
            //names[i]取到下标个数的指定标签  
            //childNodes[0]:拿到第0个子节点;nodeValue取出值-张三丰或张无忌
            txt=txt + names[i].childNodes[0].nodeValue + "<br>";
        }
        document.getElementById("myDiv").innerHTML=txt;
    }
}

xml:

<!--student.xml-->
<students>  <!-- xml格式类似html,都有根标签,里面包含多个子标签及属性 -->
	<student>
		<name>张三丰</name>  <!-- ajax访问后,目的是解析基本值 -->
		<age>99</age>
	</student>
	<student>
		<name>张无忌</name>
		<age>22</age>
	</student>
</students>

三、校验插件

1.概述

validate校验插件,主要用于表单中提交时,做的提示校验规则;也就是不满足规则条件时,会给我们提供规则提示,意味着不能提交了,直到满足了规则条件才能提交。

2.特点

引入插件后,校验规则会给我们做一些统一的内置提示

同时,我们也可以自己来指定规则提示,体现了校验插件的灵活性

3.应用

先导校验包,且需要引入jquery.js,因为插件中需要使用到;且需要放到最前面;还需要导入中文识别包

<!-- 引入包:jquery放前面 -->
<script type="text/javascript" src="../js/jquery-1.11.js" ></script>
<script type="text/javascript" src="../js/validate.min.js" ></script>
<script type="text/javascript" src="../js/messages_zh.js" ></script>
<script>
    $(function(){
        $("form").validate({  //校验规则,往往用在表单中
            rules:{ //写规则
                //里面的key对应这HTML标签中的name的属性
                username:"required",
                password:{required:true,digits:true},
                repassword:{equalTo:"[name='password']"},
                zxz:{min:3,required:true},
                shuzhiqujian:{range:[5,10],required:true}
            },messages:{  //提示信息
                username:"用户名不能为空",
                password:{required:"密码不能为空",digits:"太笨了,写数字啊"},
                repassword:{equalTo:"密码和确认密码不一致"},
                zxz:{min:"最小值为{0}"},
                shuzhiqujian:{range:"数值范围为:{0}-{1}"}
            }
        })
    })
</script>
<form>
    用户名:<input type="text" name="username"  /><br />
    密码:<input type="text" name="password" /><br />
    确认密码:<input type="text" name="repassword" /><br />
    最小值:<input type="number" name="zxz" /><br />
    数值区间:<input type="number" name="shuzhiqujian" /><br />
    <input type="submit" value="提交" />
</form>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值