AJAX技术
AJAX简介
什么是AJAX?W3School
上是这样描述AJAX的:AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX并不是一种新的语言,而是一种使用现有的标准的新方法。使用AJAX能够使我们在不重新加载页面的情况下仍然可以与服务器进行数据交换,也就是说AJAX可以对网页的某个部分进行动态地更新。一个最常见的例子就是站内搜索。比如当我们使用百度进行搜索的时候,在我们输入关键字时,输入框的下方会弹出一个搜索建议列表,动态地向用户给出提示信息。
同步与异步
在使用AJAX之前,首先需要明白什么是同步?什么是异步?同步是指客户端发送请求到服务器,在服务器响应之前,客户端都处于等待阻塞状态。而异步是指客户端发送请求到服务器,无论服务器是否响应,客户端都不会被阻塞。
原生的AJAX的技术
原生的AJAX技术主要分为五个部分:
1、创建XMLHttpRequest 对象
2、为XMLHttpRequest 对象绑定监听器
3、指定提交的URL
4、发送请求
5、接收响应数据
1、创建XMLHttpRequest 对象
值得注意的是所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)都内建了 XMLHttpRequest 对象。
1 | var xmlhttp = new XMLHttpRequest(); |
2、为XMLHttpRequest 对象绑定监听器
1 | xmlhttp.onreadystatechange=function(){ |
3、指定提交的URL
1 | open(method,url,async) |
方法 | 描述 |
---|---|
open(method,url,async) | 指定请求的类型、URL 以及是否异步处理请求 |
method:请求的类型;GET 或 POST
url:资源文件的路径
async:true(异步)或 false(同步)
4、发送请求
1 | xmlhttp.send(); |
5、接收响应数据
响应数据一般在onreadystatechange事件就绪时执行的函数的内部接收:
1 | xmlhttp.onreadystatechange=function(){ |
Jquery的AJAX技术
jQuery 库拥有完整的 Ajax 兼容套件。对 Js 原生的 AJAX 技术进行了封装,因此使用起来也更加方便,一般常用的方法有
$.get(url, [data], [callback], [type])
$.post(url, [data], [callback], [type])
以$.post(url, [data], [callback], [dataType])
为例,其用法如下:
1 | $.post( |
关于参数的描述
参数 | 描述 |
---|---|
url | 必须。指定把请求发送到哪个地址 |
data | 可选。指定发送给服务器的数据 |
callback | 可选。请求成功是执行的回调函数 |
dataType | 可选。指定期望服务器返回的数据类型(JQuery会根据指定的类型自动类型转换)常用的返回类型有xml、json、script、html |
使用AJAX异步处理完成站内搜索Demo
首先自己写了一个简单的jsp页面,里面就一个搜索框以及提交按钮,效果如下:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
需求的分析,下面是整个查询业务的分析过程,由于水平有限,只能大概地画出代码的执行过程。
代码的实现,首先是在jsp文件中获取数据并发送到服务器,修改jsp文件中的代码,具体如下:
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
WEB层的Servlet
1 | package com.my.web; |
Service层的代码
1 | package com.my.service; |
DAO层的代码
1 | package com.my.dao; |
效果