Ajax入门
2018-08-14 本文已影响6人
沧海一粟谦
Wonder Woman
什么是Ajax
Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。更新时只需要刷新局部,用户体验度好,对后台服务器的压力也小。传统网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。
Ajax语法
url:请求地址
type:请求时数据的传递方式(常用的有get/post)
data:用来传递的数据(建议使用json)
success:交互成功后要执行的方法
dataType:Ajax接收后台数据的类型(建议使用json)
注意事项:Ajax和后台交互时,后台是不能够直接跳转到其他页面的
Ajax实现登陆小案例(JQuery版)
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、首先获取jsp页面传递过来的参数信息
String username = request.getParameter("username");
String password = request.getParameter("password");
//2、如果username="15912345678",password="12345678"则登录成功,否则登录失败
JSONObject jsonObject = null;
if("15912345678".equals(username) && "12345678".equals(password)){
System.out.println("username="+username);
System.out.println("password="+password);
jsonObject = new JSONObject("{flag:true}");
}else{
//如果登录失败,则给ajax返回数据
jsonObject = new JSONObject("{flag:false}");
}
response.getOutputStream().write(jsonObject.toString().getBytes("utf-8"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录</title>
<style type="text/css">
input{
width:250px;
height:25px;
}
#login{
width:255px;
height:35px;
background-color:#FF2611;
border:0px;
cursor:pointer;
color:white
}
.c1{
font-size:24px;
color:black;
font-weight:bolder
}
.c2{
font-size:14px;
color:#666;
}
.c3{
font-size:14px;
color:red;
}
</style>
<script type="text/javascript" src="resources/js/jquery-1.4.2.js"></script>
</head>
<body style="text-align:center;">
<%-- <form action="<%=basePath%>/LoginServlet" method="post"> --%>
<table>
<tr>
<td>
<span class="c1">欢迎登录</span>
<span class="c2">没有帐号?</span>
<span class="c3">立即注册</span>
</td>
</tr>
<tr>
<td><input type="text" name="username" placeholder="请输入登录邮箱/手机号"><span class="tip" style="color:red;font-size:12px"></span></td>
</tr>
<tr>
<td><input type="password" name="password" placeholder="6-16位密码,区分大小写,不能空格"></td>
</tr>
<tr>
<td>
<!-- <input type="submit" value="登录" id="login"> -->
<input type="button" value="登录" id="login">
</td>
</tr>
</table>
<!-- </form> -->
</body>
<script type="text/javascript">
$("#login").click(function(){
//单击登录按钮的时候触发ajax事件
$.ajax({
url:"<%=basePath%>/LoginServlet",
type:"post",
data:{
username:$("input[name=username]").val(),
password:$("input[name=password]").val()
},
dataType:"json",
success:function(result){
var flag = result.flag;
if(flag==true){
//如果登录成功则跳转到成功页面
window.location.href="<%=basePath%>/pages/front/success.jsp";
}else{
//跳回到Index.jsp登录页面,同时在登录页面给用户一个友好的提示
$(".tip").text("您输入的用户名或者密码不正确");
}
}
});
});
</script>
</html>
Ajax实现局部刷新(JavaScript版)
@WebServlet("/ListCouseServlet")
public class ListCouseServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1、获取ajax传递过来的参数信息
String flag = request.getParameter("flag");
//2、需要返回的数据信息
String data = "";
if("1".equals(flag)){//Java课程
data = "Java从入门到精通<br>java框架";
}else if("2".equals(flag)){//C课程
data = "C程序设计<br>C项目实战";
}
//3、将数据信息回写给ajax
response.getOutputStream().write(data.getBytes("utf-8"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>js调用ajax</title>
<style type="text/css">
input{
width:250px;
height:25px;
}
#login{
width:255px;
height:35px;
background-color:#FF2611;
border:0px;
cursor:pointer;
color:white
}
.c1{
font-size:24px;
color:black;
font-weight:bolder
}
.c2{
font-size:14px;
color:#666;
}
.c3{
font-size:14px;
color:red;
}
</style>
</head>
<body style="text-align:center;">
<input type="button" value="查看java课程" flag="1" onclick="showJava()">
<input type="button" value="查看C课程" flag="2" onclick="showC()">
<div style="width:400px,height:300px" id="div1">
</div>
</body>
<script type="text/javascript">
function showJava(){
//1、创建一个 xmlhttpRequest对象
var xmlhttp = new XMLHttpRequest();
//2、规定请求的类型、URL 以及是否异步处理请求。
xmlhttp.open("GET","<%=basePath%>/ListCouseServlet?flag=1",true);
//3、将请求发送到服务器。
xmlhttp.send();
//4、接收服务器端的响应(readyState=4表示请求已完成且响应已就绪 status=200表示请求响应一切正常)
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
//responseText:表示的是服务器返回给ajax的数据
document.getElementById("div1").innerHTML=xmlhttp.responseText;
//alert(xmlhttp.responseText);
}
}
}
function showC(){
//1、创建一个 xmlhttpRequest对象
var xmlhttp = new XMLHttpRequest();
//2、规定请求的类型、URL 以及是否异步处理请求。
xmlhttp.open("GET","<%=basePath%>/ListCouseServlet?flag=2",true);
//3、将请求发送到服务器。
xmlhttp.send();
//4、接收服务器端的响应(readyState=4表示请求已完成且响应已就绪 status=200表示请求响应一切正常)
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
//responseText:表示的是服务器返回给ajax的数据
document.getElementById("div1").innerHTML=xmlhttp.responseText;
//alert(xmlhttp.responseText);
}
}
}
</script>
</html>