Ajax初步小结

前端之家收集整理的这篇文章主要介绍了Ajax初步小结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Ajax技术主要是把html、css、js、dom 技术结合在一起使用。 在页面不刷新的情况下,和后台的服务器,以及程序进行数据的传输。

页面不刷新:用户在操作页面的时候,当某个操作结束之后,使用AJAX技术和服务器进行交互,但是用户还可以继续再页面上进行其他的操作。用户并不会感觉到页面在和后台交互。

ajax常见应用:
地图、注册页面光标离焦之后验证某些数据是否可用等。

XMLHttpRequest对象

XMLHttprequest对象是所有浏览器内置的对象。这个对象负责和服务器之间进行数据的交互。我们在JS代码中,先得到XMLhttprequest对象,然后通过这个对象的向服务器发送数据,同时还要使用这个对象接收服务器的响应数据,在获取到响应数据之后,使用JS和dom技术,把数据添加到当前的页面上。

获取XMLHttpRequest对象的标准步骤

function getXMLHttpRequest(){
    var xmlhttp;
/*
window.XMLHttpRequest 使用window对象,调用XMLHttpRequest,
如果当前window对象有XMLHttpRequest,这时就会得到XMLHttpRequest,
如果当前的window对象没有XMLHttpRequest,这时会得到undefined
*/
if (window.XMLHttpRequest){
    // code for IE7+,Firefox,Chrome,Opera,Safari
        xmlhttp=new XMLHttpRequest();
}
else{
    // code for IE6,IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    return xmlhttp;
}

设置回调函数

//定义函数
function demo(){
  //在光标离开当前的输入框之后,需要获取到当前的xmlhttprequest对象
var xhr = getXMLHttpRequest();
//向服务器发送请求
//1、需要打开和服务器之间的连接
xhr.open("get","/day19/demo",true);
//2、发送请求
xhr.send();
//3、设置回调函数
xhr.onreadystatechange = function(){
document.getElementById("s").innerHTML = "123";
}
}

open方法中的第一个参数:
设置向服务器发送请求时提交数据的方式:get和post
open方法中的第二个参数:
本次请求的服务器的资源路径。
open方法的第三个参数:
true:表示页面的处理和后台发送请求是异步进行。一般都设置true。
false:页面的处理和后台是同步。

send是将请求的数据发送给服务器。send方法中的参数,只有在post请求时才能书写。
如果get方式,直接书写send,括号中不要书写任何内容

setRequestHeader方法

如果使用post方式和服务器交互,并且在send中携带参数,需要通过xmlhttprequest中的setRequestHeader设置请求头信息。

readyState属性

status属性

responseText 、responseXML

xmlhttprequest对象中提供的2个属性获取服务器响应的数据:
responseText:它接收服务器响应的所有文本数据。
responseXML:它接收服务器响应的xml格式的数据。

response.setContentType("text/html;charset=utf-8");
response.setContentType("text/xml;charset=utf-8");

ajax技术和服务器交互模版代码

1获取xmlhttprequest对象
将获取xmlhttprequest对象的js代码单独封装到一个js文件,在需要的jsp页面中导入
var xhr = getXMLHttpRequest();

2、打开连接
xhr.open(“get|post”,”请求的资源路径”,true);
3、发送数据
xhr.send(“携带 参数,仅限于post方式”);
4、设置onreadystatechange事件对应的函数
5、在函数中判断readyState==4 && status == 200
6、使用responseText获取响应的数据

验证手机号码是否正确示列

<script type="text/javascript" src="js/xhr.js"></script>
    <script type="text/javascript"> //定义函数 function demo(){ //获取用户输入的数据 var name = document.getElementById("name").value; /* 使用正则表达式验证用户名的合法性 JS中的正则对象: RegExp */ var reg = new RegExp("^1[34578][0-9]{9}$"); //使用正则进行验证 if( !(reg.test(name)) ){ //判断成立说明当前输入的手机号码不正确 document.getElementById("s").innerHTML = "手机号码格式错误"; }else{ var xhr = getXMLHttpRequest(); xhr.onreadystatechange = function(){ if( xhr.readyState == 4 && xhr.status == 200 ){ //处理后台查询出来的数据 document.getElementById("s").innerHTML = xhr.responseText; } } //1、需要打开和服务器之间的连接 xhr.open("post","/day19/regist",true); xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //2、发送请求 xhr.send("name="+name); } } </script>
  </head>

  <body>
    <form action="/day19/demo" method="post">
        <!-- 直接在标签上书写对应的事件绑定的函数 -->
        用户名<input type="text" name="name" id="name" onbl"demo();"/>
  <span id="s"></span><br/>
  put type="submit" value="demo" />
    </form>
  </body>
public class RegistServlet extends HttpServlet {

    public void doGet(HttpServletRequest request,HttpServletResponse response)
            throws ServletException,IOException {

        request.setCharacterEncoding("utf-8");
        //获取ajax引擎提交的是手机号码
        String name = request.getParameter("name");
        response.setContentType("text/html;charset=utf-8");
        if( name == null || name.trim().length() == 0 ){
            response.getWriter().println("<font color='red'>请输入正确的手机号码</font>");
            return ;
        }

        //后台查询当前的用户输入的信息是否已经被注册
        UserService service = new UserService();
        boolean boo = service.findByName(name);
        if( boo ){
            //说明用户名可以使用
            response.getWriter().println("<font color='green'>手机号码可用</font>");
        }else{
            //用户名已经被注册
            response.getWriter().println("<font color='red'>手机号码已注册</font>");
        }
    }

    public void doPost(HttpServletRequest request,IOException {
        doGet(request,response);
    }

}
原文链接:https://www.f2er.com/ajax/162595.html

猜你在找的Ajax相关文章