博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax
阅读量:5220 次
发布时间:2019-06-14

本文共 3453 字,大约阅读时间需要 11 分钟。

Ajax可以不刷新整个页面只刷新页面的部分内容

AJAX :代表 Asynchronous JavaScript And XML

ajax可以使页面像桌面应用一样具有响应性和交互性

Asynchronous异步的:发送请求后不等返回结果,由回调函数处理结果

用途:使用JavaScript从服务器获取数据而不必刷新整个页面

XMLHttpRequest是整个Ajax技术的灵魂。

Ajax技术的核心是异步发送请求,而XMLHttpRequest则是异步发送请求的对象。

并不是所有的浏览器中使用的都叫XMLHttpRequest,需要根据不同的浏览器创建对象。

利用XMLHttpRequest(XHR)对象,每次构建Ajax应用必须遵循以下步骤:

  • 创建XHR对象
  • 创建Ajax请求
  • 发送Ajax请求
  • 处理服务器响应

在发送请求后,往往无法知道请求什么时候完成,所以必须利用事件机制捕获请求的状态,XMLHttpRequest对象提供了onreadystatechange事件实现这一功能。

nreadystatechange事件可以指定一个事件处理函数来处理XMLHttpRequest对象的执行结果

在调用open方法与send方法时都会触发onreadystatechange事件。

onreadystatechange事件是在readyState属性方法改变时触发,

readyState的值表示了当前请求的状态,

在事件处理程序中可以根据这个值进行不同的处理

在整个请求过程中,onreadystatechange事件在每一次readyState值发生改变时都会被触发。通常在事件中判断readyState的值是在请求完成时才做处理。

 status存储服务器端返回的HTTP响应代码,它代表请求的处理结果,

在请求已经完成的情况下,可以使用status判断请求的结果,其中,404错误是最常见的错误代码,代表“请求资源未找到”。在Ajax的开发中,最常用的是200这个响应代码,例如在浏览器成功打开了一个网页,这时HTTP相应代码就是200,但这个代码一般不会显示。

 XHR对象可以接收服务器返回的文本片段和XML文档,分别保存在responseText与responseXML属性中。

当服务器端处理了请求并返回后,可以利用XMLHttpRequest对象的responseText属性获取返回的文本片段。

 

 

例子:模拟股票更新

首先创建一个webproject,

在webRoot里面新建jsp文件夹存放jsp文件

在webRoot里面新建html文件夹存放html文件

在html文件夹创建first.html文件

在body中加入代码:(这是浏览器页面要呈现的内容)

mysql虚拟股票:
oracle虚拟股票:
jboss虚拟股票:

 在head标签中写入script脚本:(用于实时刷新,产生1-10 的随机数)

分四步:

一:声明XHR对象(XMLhttpRequest),定义XHR对象初始化函数

var xhr;    //定义一个初始化函数    function createXMLHttpRequest() {        if (window.XMLHttpRequest) {            // 普通浏览器            xhr = new XMLHttpRequest();        } else if (window.ActiveXObject) {            // IE5 IE6            try {                xhr = new ActiveXObject("Msxml2.XMLHTTP");            } catch (e) {                try {                    xhr = new ActiveXObject("Microsoft.XMLHTTP");                } catch (e) {                }            }        }    }

二、定义发送简单请求的函数

  • 初始化XHR对象
  • 打开与服务器的链接
  • 指定XHR状态改变事件要执行的函数
  • 发送请求
// 用于发送简单请求的函数    function getPrice() {        // 初始化XMLHttpRequest对象        createXMLHttpRequest();        var uri = "second.jsp";        // 打开与服务器的连接        xhr.open("POST", uri, true);        // 指定当XMLHttpRequest状态改变时的事件处理函数        xhr.onreadystatechange = processResponse;        // 发送请求        xhr.send(null);    }

三、定义请求要执行的函数(没隔一秒刷新一次页面)

// 当XMLHttpRequest状态改变时,该函数将被触发(事件触发函数)    function processResponse()     {        if (xhr.readyState == 4)         {            if (xhr.status == 200)             {                // 将服务器响应以$符号分割成一个字符串数组                var prices = xhr.responseText.split("$");                // 将服务器的响应通过页面显示。                document.getElementById("mysql").innerHTML = prices[0];                document.getElementById("tomcat").innerHTML = prices[1];                document.getElementById("jetty").innerHTML = prices[2];                // 设置1秒钟后再次发送请求                //setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式                setTimeout("getPrice()", 1000);            }        }    }

四、调用函数

// 指定页面加载完成后指定getPrice()函数document.body.onload = getPrice;

将项目加入tomcat,运行tomcat

在浏览器中访问:

大概每隔1秒钟页面的股票价格会刷新一次。

五、在jsp文件夹新建second.jsp文件夹

产生随机数(0-10),每个数之间用¥分开

 

<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.util.*" %><%    //创建伪随机器,以系统时间作为随机器的种子    Random rand = new Random(System.currentTimeMillis());    //生成三个伪随机数字,并以$符号隔开后发送到客户端    out.println(rand.nextInt(10) + "$" + rand.nextInt(10) + "$" + rand.nextInt(10)); %>

细节说明:

Open方法通常有三个参数:

第一个:指定发送请求的方式(POST或GET)

第二个:指定发送请求的服务器资源地址

第三个:只能为true(异步方式发送请求)false(同步方式发送请求),异步方式发送请求,一般默认true

 

转载于:https://www.cnblogs.com/excellencesy/p/7843947.html

你可能感兴趣的文章
BootScrap
查看>>
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
查看>>
NPM慢怎么办 - nrm切换资源镜像
查看>>
CoreData 从入门到精通(四)并发操作
查看>>
Swift - UIView的常用属性和常用方法总结
查看>>
Swift - 异步加载各网站的favicon图标,并在单元格中显示
查看>>
Java编程思想总结笔记Chapter 5
查看>>
[LeetCode]662. Maximum Width of Binary Tree判断树的宽度
查看>>
WinForm聊天室
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
大数据学习之一——了解简单概念
查看>>
Linux升级内核教程(CentOS7)
查看>>
Lintcode: Partition Array
查看>>