AJAX基础应用
AJAX请求
什么是AJAX请求
AJAX即"Asynchronous Javascript And XML"(异步 javaScript和XML),是指一种创建交互式网页应用的网页开发技术。
Ajax是一种浏览器通过js异步发起请求。局部更新页面的技术
Ajax请求的局部更新,浏览器地址栏不会发生变化
局部更新不会 舍弃原来页面的内容
原生AJAX请求的示例
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 在这里使用javaScript语言发起Ajax请求,访问服务器AjaxServlet中javaScriptAjax
function ajaxRequest() {
// 1、我们首先要创建XMLHttpRequest
var xmlhttprequest=new XMLHttpRequest();
// 2、调用open方法设置请求参数
xmlhttprequest.open("GET","http://localhost:8089/ajaxServlet?action=javaScriptAjax",true);
// 4、在send方法前绑定onreadystatechange事件,处理请求完成后的操作。
xmlhttprequest.onreadystatechange=function () {
if (xmlhttprequest.readyState == 4&&xmlhttprequest.status == 200){
alert("接收的信息为:"+xmlhttprequest.responseText);
var jsonObj = JSON.parse(xmlhttprequest.responseText);
//把响应的数据显示在页面上
document.getElementById("div01").innerHTML = "编号:"+jsonObj.id+"姓名:"+jsonObj.name;
}
}
// 3、调用send方法发送请求
xmlhttprequest.send();
alert("我是最后一行的代码");
}
</script>
</head>
<body>
<!-- <a href="http://localhost:8080/16_json_ajax_i18n/ajaxServlet?action=javaScriptAjax">非Ajax</a>-->
<button onclick="ajaxRequest()">ajax request</button>
<button onclick="ajaxRequest()">ajax request</button>
<button onclick="ajaxRequest()">ajax request</button>
<button onclick="ajaxRequest()">ajax request</button>
<button onclick="ajaxRequest()">ajax request</button>
<div id="div01">
</div>
<table border="1">
<tr>
<td>1.1</td>
<td>1.2</td>
</tr>
<tr>
<td>2.1</td>
<td>2.2</td>
</tr>
</table>
</body>
</html>
Ajax同步异步的区别
1、同步的概念应该是来自于操作系统中关于同步的概念。
2、不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式)。同步强调的是顺序性,谁先谁后;异步则不存在这种顺序性。
3、同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。
4、异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。
小结:
同步:当页面端提交后,整个页面是不能点击的,必须要等到服务端处理完成后返回到页面端,用户才能继续点击页面,进行下一步操作,这样一个等待的流程叫做同步
异步:当页面端提交后,整个页面是可以点击的,不是必须要等到服务端处理完成后返回到页面端,用户就可以继续点击页面,进行下一步操作,这样一流程叫做异步
jQuery中的AJAX请求
$.ajax方法
$.ajax方法 | |
---|---|
url | 表示请求的地址 |
type | 表示请求的类型GET或POST请求 |
data | 表示发送给服务器的数据 |
success | 请求响应,响应的回调函数 |
dataType | 响应的数据类型 、常用的数据类型有:text、xml、json |
text | 纯文本 |
xml | 表示xml数据 |
json | 表示json对象 |
data:格式有两种
一:name=value&name=value
二:{key:value}
$("#ajaxBtn").click(function(){
$.ajax({
url:"http://localhost:8089/ajaxServlet",
data:{action:"jQueryAjax"},
type:"GET",
success:function (data) {
// alert("服务器返回的数据是:"+data);
alert(data+1)
$("#msg").html("姓名:"+data.name+"学号:"+data.id);
},
dataType:"json",
});
});
. g e t 方 法 和 .get方法和 .get方法和.post方法
. g e t 方 法 和 .get方法和 .get方法和.post方法 | |
---|---|
url | 请求的url地址 |
data | 发送的数据 |
callback | 成功的回调函数 |
type | 返回的数据类型 |
//$.get方法
$("#getBtn").click(function () {
$.get("http://localhost:8089/ajaxServlet","action=jQueryGet",function (data) {
$("#msg").html("姓名:"+data.name+"学号:"+data.id);
},"json")
})
//-----------------------------------------------------------
//$.Post方法
$("#postBtn").click(function () {
$.get("http://localhost:8089/ajaxServlet","action=jQueryPost",function (data) {
$("#msg").html("姓名:"+data.name+"学号:"+data.id);
},"json")
})
$.getJSON方法
$.getJSON方法 | |
---|---|
url | 请求的url地址 |
data | 发送给服务器的数据 |
callback | 成功的回调函数 |
$("#getJSONBtn").click(function () {
$.getJSON("http://localhost:8089/ajaxServlet","action=jQueryGetJson",function (data) {
$("#msg").html("姓名:"+data.name+"学号:"+data.id);
},"json")
})
表单序列化 serialize()
serialize()可以把表单中所有表单项的内容都获取到,并以name=value&name=value的形式进行拼接。
$("#submit").click(function () {
//把参数序列化
$.getJSON("http://localhost:8089/ajaxServlet","action=jQueryserialize&"+$("#form01").serialize(),function (data) {
$("#msg").html( "jQueryserialize 姓名:"+data.name+"学号:"+data.id);
})
})
可以通过在页面提交表单,在java代码上通过getParameter()方法进行读取
protected void jQueryserialize(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("jQueryserialize == 方法调用了");
System.out.println("用户名:"+req.getParameter("username"));
System.out.println("密码:"+req.getParameter("password"));
System.out.println("下拉单:"+req.getParameter("single"));
System.out.println("下拉多:"+req.getParameter("multiple"));
Person person =new Person("磊哥",1);
//转换成Json字符串,响应回ajax
Gson gson=new Gson();
String personJsonString = gson.toJson(person);
resp.getWriter().write(personJsonString);
}
扩展:验证用户名是否可用
分为三个步骤
1、先获取请求的参数 user
2、调用UserService.existsusername():Boolean 验证用户名是否可用
3、把客户端需要的结果,封装成为Map对象,然后回传给客户端用户名是否可用
页面根据回传的结果,提示用户是否可用
riter().write(personJsonString);
}
## 扩展:验证用户名是否可用
分为三个步骤
1、先获取请求的参数 user
2、调用UserService.existsusername():Boolean 验证用户名是否可用
3、把客户端需要的结果,封装成为Map对象,然后回传给客户端用户名是否可用
页面根据回传的结果,提示用户是否可用