AJAX

AJAX

什么是Ajax

Ajax(Asynchronous JavaScript and XML)

允许浏览器与服务器通信而无须刷新当前页面的技术

不需要刷新整个页面便可与服务器通讯的方法

-flash

-JavaScript

-框架

-隐藏的iframe

-XMLHttpRequest:该对象是对JavaScript的一个扩展,可使网页与服务器进行通信。是创建Ajax应用的最佳选择实际上通常把Ajax当成XMLHttpRequest对象的代名词

AJAX工具包

Ajax并不是一项新技术,它实际上是几种技术,每种技术各尽其职,以一种全新的方式聚合在一起

——服务器端语言:服务器需要具备向浏览器发送特定信息的能力。Ajax与服务器语言无关。

——XML(可扩展标记语言)是一种描述数据的格式。Ajax程序需要某种格式化的格式来在服务器和客户端之间传递信息,XML是其中一种选择

——XHTML(扩展超媒体标记语言)和CSS(级联样式表)标准化呈现。

——DOM(文档对象模型)实现动态显示和交互:

——使用XMLHTTO组件XMLHttoRequest对象进行异步数据读取

——使用JavaScript绑定和处理所有数据

创建XMLHttpRequest对象

xhr = new XMLHttpRequest();

XMLHttpRequest对象的方法

abort():停止当前的请求

getAllResponseHeaders():把HTTP请求的所有响应首部作为键/值对返回

getResponseHeader("header")返回指定首部的串值

open("method","url"):建立对服务器的调用。Method参数可以是GET、POST或PUT。url参数可以是相对url或绝对url

send(content):向服务器发送请求

setRequestHeader("header","value"):把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()

XMLHttpRequest对象的属性

onreadystatechange:每个状态改变是都会触发这个事件处理器,通常会调用一个javascript函数

readyState:请求的状态,有5个可取值:0=未初始化,1=正在加载,2=已经加载,3=交互中,4=完成

responseText:服务器的响应,表示为一个串

responseXML:服务器的响应,表示为XML,这个对象可以解析为DOM对象

status:服务器的HTTP状态码(200对应OK,404对应NotFount等)

发送请求:

* 利用XMLHttpRequest实例与服务器进行通信包含以下3个关键部分:

——onreadystatechange事件处理函数

——open方法

——send方法

* onreadystatechange:

——这个事件处理函数由服务器触发,而不是用户

——在ajax执行过程中,服务器会通知客户端当前的通信状态。这依靠更新XMLHttpRequest对象的readyState来实现。改变readyState属性是服务器对客户端连接操作的一种方式。每次readyState属性的改变都会触发readystatechange事件

GET请求:

 

<%--
  Created by IntelliJ IDEA.
  User: dell
  Date: 2019/5/23
  Time: 15:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
    <script>
        $(function () {
            //1.获取a节点,并为其添加onclick响应函数
            $('a').click(function () {
              //3.创建一个XMLHttpRequest对象
                var request = new XMLHttpRequest();
                //4.准备发送请求的数据:url
                var url = this.href + "?time=" + new Date();
                var method = 'GET';
                
                //5.调用XMLHttpRequest对象的open方法
                request.open(method,url);
                //6.调用XMLHttpRequest对象的send方法
                request.send(null);
                //7.为XMLHttpRequest对象添加onreadystatechange响应函数
                request.onreadystatechange = function () {
                    //8.判断响应是否完成:XMLHttpRequest对象的readyState属性值为4的时候
                    if (request.readyState == 4){
                        if (request.status == 200||request.status == 304){
                            alert(request.responseText);
                        }
                    }
                }
                //2.取消a节点的默认行为
                return false;
            })
        })
    </script>
</head>
<body>
    <a href="HelloAjax.txt">HelloAjax</a>
</body>
</html>

post请求

<%--
  Created by IntelliJ IDEA.
  User: dell
  Date: 2019/5/23
  Time: 15:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
    <script>
        $(function () {
            //1.获取a节点,并为其添加onclick响应函数
            $('a').click(function () {
              //3.创建一个XMLHttpRequest对象
                var request = new XMLHttpRequest();
                //4.准备发送请求的数据:url
                var url = this.href + "?time=" + new Date();
                var method = 'POST';
                
                //5.调用XMLHttpRequest对象的open方法
                request.open(method,url);
                //POST
                request.setRequestHeader('ContentType','application/x-www-form-urlencoded');

                //6.调用XMLHttpRequest对象的send方法
                request.send("name=atguigu");
                //7.为XMLHttpRequest对象添加onreadystatechange响应函数
                request.onreadystatechange = function () {
                    //8.判断响应是否完成:XMLHttpRequest对象的readyState属性值为4的时候
                    if (request.readyState == 4){
                        if (request.status == 200||request.status == 304){
                            alert(request.responseText);
                        }
                    }
                }
                //2.取消a节点的默认行为
                return false;
            })
        })
    </script>
</head>
<body>
    <a href="HelloAjax.txt">HelloAjax</a>
</body>
</html>
原文地址:https://www.cnblogs.com/yangHS/p/10910900.html