一、Ajax介绍
1、什么是 ajax
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML)可以使网页实现异步更新,就是不重新加载整个网页的情况下,对网页的某部分进行更新(局部刷新)。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。
AJAX = 异步 JavaScript和XML,是一种新的思想,整合之前的多种技术,用于创建快速交互式网页应用的网页开发技术。
Ajax: 不利用表单,连接的前提下,利用JS偷悄悄的和服务端传递数据。
2、ajax原理介绍
使用JavaScript获得浏览器内置的AJAX引擎(XMLHttpRequest对象)
通过AJAX引擎确定请求路径和请求参数
通知AJAX引擎发送请求
AJAX引擎会在不刷新浏览器地址栏的情况下,发送请求
服务器获得请求参数
服务器处理请求参数(添加、查询等操作)
服务器响应数据给浏览器
AJAX引擎获得服务器响应的数据,通过执行JavaScript的回调函数将数据传递给浏览器页面。
通过设置给AJAX引擎的回调函数获得服务器响应的数据
使用JavaScript在指定的位置,显示响应数据,从而局部修改页面的数据,达到局部刷新目的。
3、执行流程
(1)、获取AJAX引擎对象(JS内置对象)
(2)、为AJAX引擎对象绑定请求路径,参数
(3)、为AJAX引擎对象设置回调函数,当状态发生改变的时候,做一些处理
(4)、利用AJAX引擎对象发送请求
(5)、利用AJAX引擎对象获取到服务端响应回来的数据做进一步处理
二、使用 JavaScript 调用 ajax -- 很少利用此方式
1、servlet中的代码
package cn.itcast.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletDemo01 extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
}
String name = request.getParameter("name");
String age = request.getParameter("age");
System.out.println(name+"<===>"+age);
response.getWriter().println(name+":"+age);
}
}
2、GET 方式HTML中的 js 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试JS调用Ajax中的GET形式</title>
</head>
<body>
<button οnclick="fn()">按钮</button>
<input type="text" name="dd" id="tx"/>
</body>
<script type="text/javascript">
//------------------------------此部分为固定格式-----------------------------------
function ajaxFunction()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
return xmlHttp;
}
//------------------------------此部分为固定格式-----------------------------------
//调用ajax的函数
function fn(){
//测试Ajax
//1_获取Ajax核心对象
var xmlHttp=ajaxFunction();
//4_为ajax核心对象设置一个回调函数
//为xmlHttp绑定事件:当状态发生改变的时候触发一个事件
xmlHttp.onreadystatechange=function(){
alert(xmlHttp.readyState);
//当xmlHttp的readyState属性值为4:服务端已经正常响应完毕
if(xmlHttp.readyState==4){
//当xmlHttp的status为200代表本次正常响应成功
if(xmlHttp.status==200){
//通过xmlHttp的responseText属性获取到服务端响应回的数据
//alert(xmlHttp.responseText);
document.getElementById("tx").value=xmlHttp.responseText;
}
}
}
//2_为Ajax核心对象绑定路径,参数 1:请求的方式 GET/POST 参数2:本次请求的路径 参数3:是否采用异步提交 99% true
xmlHttp.open("GET","/day45/ServletDemo01?name=tom&age=18",true);
//3_利用Ajax核心对象发送请求
xmlHttp.send();
}
</script>
</html>
3、POST方式HTML中的 js 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试JS调用Ajax中的POST形式</title>
</head>
<body>
<button οnclick="fn()">按钮</button>
<input type="text" name="dd" id="tx"/>
</body>
<form action="" method="" enctype="application/x-www-form-urlencoded">
</form>
<script type="text/javascript">
//------------------------------此部分为固定格式-----------------------------------
function ajaxFunction()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
return xmlHttp;
}
//------------------------------此部分为固定格式-----------------------------------
function fn(){
//测试Ajax
//1_获取Ajax核心对象
var xmlHttp=ajaxFunction();
//5_为ajax核心对象设置一个回调函数
//为xmlHttp绑定事件:当状态发生改变的时候触发一个事件
xmlHttp.onreadystatechange=function(){
//当xmlHttp的readyState属性值为4:服务端已经正常响应完毕
if(xmlHttp.readyState==4){
//当xmlHttp的status为200代表本次正常响应成功
if(xmlHttp.status==200){
//通过xmlHttp的responseText属性获取到服务端响应回的数据
//alert(xmlHttp.responseText);
document.getElementById("tx").value=xmlHttp.responseText;
}
}
}
//2_为Ajax核心对象绑定路径,参数 1:请求的方式 GET/POST 参数2:本次请求的路径 参数3:是否采用异步提交 99% true
xmlHttp.open("POST","/day45/ServletDemo01",true);
//3 设置请求编码 , 设置请求时数据传递格式,默认字符串格式
xmlHttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
//4_利用Ajax核心对象发送请求
xmlHttp.send("name=tom&age=18");
}
</script>
</html>
4、POST和GET方式的区别总结
利用JS 发送Ajax_post 比 get形式 多2个步骤:
向服务端传递的参数放置在 xmlHttp.send("参数");
设置请求数据格式 xmlHttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
三、利用JQuery进行Ajax请求 -- 开发中最常用的方式
1、引入jquery文件
2、语法及参数含义
$.get();
$.get("");
$.get("",{});
$.get("",{},function(dt){});
$.get("",{},function(dt){},"json");
参数1:字符串: 请求的路径
参数2:JS对象 :发送的参数
参数3:匿名函数 dt:dt存放着服务端响应回来的数据
参数4:字符串 :希望服务端响应回来的数据格式
3、GET方式请求
<title>Insert title here</title>
<script type="text/javascript" src="/day45/js/jquery-1.11.3.min.js"></script>
</head>
<body>
<button οnclick="fn()">按钮</button>
<input type="text" id="tx"/>
<script>
function fn(){
$.get("/day45/ServletDemo01",{"name":"jack","age":18},function(dt){
///代码....
$("#tx").val(dt);
});
}
</script>
</body>
4、POST方式请求
<title>Insert title here</title>
<script type="text/javascript" src="/day45/js/jquery-1.11.3.min.js"></script>
</head>
<body>
<button οnclick="fn()">按钮</button>
<input type="text" id="tx"/>
<script>
function fn(){
$.post("/day45/ServletDemo01",{"name":"jack","age":18},function(dt){
///代码....
$("#tx").val(dt);
});
}
</script>
</body>
$.ajax(
{
url:"${pageContext.request.contextPath}/ServletDemo01",
data:"name=zhangsan",
type:"post",//请求方式
dataType:"json",//返回的数据类型
success:function(d)
{
alert(d);
},
//发生错误时调用的方法
error:function()
{
alert("响应失败了");
}
})
四、JSON数据
1、什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,就是说不同的编程语言JSON数据是一致的。
2、JSON的格式
JSON对象格式:
{"key":"value","key":"value",.....}
键和值使用冒号分隔。
标准规范要求key必须使用双引号,value如果没有使用双引号表示变量。
例如:var user = {"username":"jack","password":"1234"};
JSON数组格式:
[ obj , obj , obj , ....]
[ {"key":"value","key":"value",.....} , {"key":"value","key":"value",.....} , {"key":"value","key":"value",.....} , ....]
一组JSON对象,对象之间用,号隔开
例如:var data = [
{"id":"b001","title":"javaweb","price":"998"},
{"id":"b002","title":"java 基础","price":"123"},
{"id":"b003","title":"ssh","price":"250"}
];