zoukankan      html  css  js  c++  java
  • 【JavaWeb】AJAX 请求

    AJAX 请求

    什么是 AJAX

    AJAX(Asynchronous JavaScript And XMl),即异步 JS 和 XML。是指一种创建交互式网页应用的网页开发技术。

    AJAX 是一种浏览器通过 JS 异步发起请求,局部更新页面的技术。它请求的局部更新,浏览器地址不会发生变化,且局部更新不会舍弃原来的页面。

    原生 AJAX 示例

    package cn.parzulpan.web;
    
    import cn.parzulpan.bean.User;
    import com.google.gson.Gson;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @Author : parzulpan
     * @Time : 2020-12-14
     * @Desc :
     */
    
    @WebServlet(name = "AjaxServlet", urlPatterns = ("/ajaxServlet"))
    public class AjaxServlet extends BaseServlet {
        protected void javaScriptAjax(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("Ajax 请求发过来了");
    
            // 将数据返回给客户端
            User user = new User(1, "潘K", "123456", "parzulpan@321.com");
            Gson gson = new Gson();
            String userJsonString = gson.toJson(user);
            response.getWriter().write(userJsonString);
        }
    
    }
    
    <!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>原生 AJAX 请求的示例</title>
    		<script type="text/javascript">
    			// 在这里使用 javaScript 语言发起 Ajax 请求,访问服务器 AjaxServlet 中 javaScriptAjax
    			function ajaxRequest() {
    				//1、首先要创建 XMLHttpRequest
    				let xmlHttpRequest = new XMLHttpRequest();
    
    				//2、调用 open 方法设置请求参数
    				xmlHttpRequest.open("GET", "ajaxServlet?action=javaScriptAjax", true);
    
    				//4、在 send 方法前绑定 onreadystatechange 事件,处理请求完成后的操作
    				xmlHttpRequest.onreadystatechange = function () {
    					if (xmlHttpRequest.readyState === 4 && xmlHttpRequest.status === 200) {
    						let jsonObj = JSON.parse(xmlHttpRequest.responseText);
    						// 把响应的数据显示在页面上
    						document.getElementById("div01").innerHTML = " id: " + jsonObj.id +
    								" username: " + jsonObj.username +
    								" password: " + jsonObj.password +
    								" email: " + jsonObj.email
    					}
    				};
    
    				//3、调用 send 方法发送请求
    				xmlHttpRequest.send();
    			}
    		</script>
    	</head>
    	<body>	
    		<button onclick="ajaxRequest()">ajax request</button>
    		<div id="div01">
    		</div>
    	</body>
    </html>
    

    jQuery 中的 AJAX 请求

    常用方法

    • $.ajax()
      • url 表示请求的地址
      • type 表示请求的类型(GET、POST)
      • data 表示发送给服务器的数据,有两种格式:
        • name=value&name2=value2
        • {key: value}
      • success 请求成功,响应的回调函数
      • dataType 响应的数据类型,常用的有:
        • text 纯文本
        • xml xml 数据
        • json json 对象
    • $.get()$.post()
      • url 请求的 url 地址
      • data 发送的数据
      • callback 成功的回调函数
      • type 返回的数据类型
    • $.getJSON()
      • url 请求的 url 地址
      • data 发送给服务器的数据
      • callback 成功的回调函数
    • serialize() 可以把表单中所有表单项的内容都获取到,并以 name=value&name=value 的形式进行拼接
    <!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>jQuery 中的 AJAX 请求</title>
    		<script type="text/javascript" src="static/script/jquery-1.7.2.js"></script>
    		<script type="text/javascript">
    			$(function(){
    				// ajax请求
    				$("#ajaxBtn").click(function(){
    					
    					$.ajax({
    						url: "ajaxServlet",
    						data: {action: "jQueryAjax"},
    						success: function (data) {
    							// 把响应的数据显示在页面上
    							$("#msg").html(" id: " + data.id +
    									" username: " + data.username +
    									" password: " + data.password +
    									" email: " + data.email);
    						},
    						dataType: "json"
    					});
    				});
    
    				// ajax--get请求
    				$("#getBtn").click(function(){
    					$.get("ajaxServlet", "action=jQueryAjax", function (data) {
    						// 把响应的数据显示在页面上
    						$("#msg").html(" id: " + data.id +
    								" username: " + data.username +
    								" password: " + data.password +
    								" email: " + data.email);
    					}, "json")
    				});
    				
    				// ajax--post请求
    				$("#postBtn").click(function(){
    					$.post("ajaxServlet", "action=jQueryAjax", function (data) {
    						// 把响应的数据显示在页面上
    						$("#msg").html(" id: " + data.id +
    								" username: " + data.username +
    								" password: " + data.password +
    								" email: " + data.email);
    					}, "json")
    				});
    
    				// ajax--getJson请求
    				$("#getJSONBtn").click(function(){
    					$.getJSON("ajaxServlet", "action=jQueryAjax", function (data) {
    						// 把响应的数据显示在页面上
    						$("#msg").html(" id: " + data.id +
    								" username: " + data.username +
    								" password: " + data.password +
    								" email: " + data.email);
    					})
    
    				});
    
    				// ajax请求
    				$("#submit").click(function(){
    
    
    					// 把参数序列化
    					$.getJSON("ajaxServlet", "action=jQueryAjaxSerialize&" + $("#form01").serialize(), function (data) {
    						// 把响应的数据显示在页面上
    						$("#msg").html(" id: " + data.id +
    								" username: " + data.username +
    								" password: " + data.password +
    								" email: " + data.email);
    					})
    				});
    				
    			});
    		</script>
    	</head>
    	<body>
    		<div>
    			<button id="ajaxBtn">$.ajax请求</button>
    			<button id="getBtn">$.get请求</button>
    			<button id="postBtn">$.post请求</button>
    			<button id="getJSONBtn">$.getJSON请求</button>
    		</div>
    
    		<div id="msg">
    
    		</div>
    
    		<br/><br/>
    		<form id="form01" >
    			用户名:<input name="username" type="text" /><br/>
    			密码:<input name="password" type="password" /><br/>
    			下拉单选:<select name="single">
    			  	<option value="Single">Single</option>
    			  	<option value="Single2">Single2</option>
    			</select><br/>
    		  	下拉多选:
    		  	<select name="multiple" multiple="multiple">
    		    	<option selected="selected" value="Multiple">Multiple</option>
    		    	<option value="Multiple2">Multiple2</option>
    		    	<option selected="selected" value="Multiple3">Multiple3</option>
    		  	</select><br/>
    		  	复选:
    		 	<input type="checkbox" name="check" value="check1"/> check1
    		 	<input type="checkbox" name="check" value="check2" checked="checked"/> check2<br/>
    		 	单选:
    		 	<input type="radio" name="radio" value="radio1" checked="checked"/> radio1
    		 	<input type="radio" name="radio" value="radio2"/> radio2<br/>
    		</form>			
    		<button id="submit">提交--serialize()</button>
    	</body>
    </html>
    
    package cn.parzulpan.web;
    
    import cn.parzulpan.bean.User;
    import com.google.gson.Gson;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @Author : parzulpan
     * @Time : 2020-12-14
     * @Desc :
     */
    
    @WebServlet(name = "AjaxServlet", urlPatterns = ("/ajaxServlet"))
    public class AjaxServlet extends BaseServlet {
        protected void jQueryAjax(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("jQueryAjax 请求发过来了");
    
            // 将数据返回给客户端
            User user = new User(1, "潘K", "123456", "parzulpan@321.com");
            Gson gson = new Gson();
            String userJsonString = gson.toJson(user);
            response.getWriter().write(userJsonString);
        }
    
        protected void jQueryAjaxSerialize(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("jQueryAjaxSerialize 请求发过来了");
    
            // 获取客户端的请求
            String username = request.getParameter("username");
            System.out.println(username);
            String password = request.getParameter("password");
            System.out.println(password);
    
            // 将数据返回给客户端
            User user = new User(1, "潘K", "123456", "parzulpan@321.com");
            Gson gson = new Gson();
            String userJsonString = gson.toJson(user);
            response.getWriter().write(userJsonString);
        }
    
    }
    

    练习和总结

  • 相关阅读:
    Linux企业运维人员最常用150个命令汇总
    【ASP.NET Core快速入门】(七)WebHost的配置、 IHostEnvironment和 IApplicationLifetime介绍、dotnet watch run 和attach到进程调试
    C#7.0新特性
    【转载】ASP.NET Core 依赖注入
    【ASP.NET Core快速入门】(六)配置的热更新、配置的框架设计
    【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
    【ASP.NET Core快速入门】(四)在CentOS上安装.NET Core运行时、部署到CentOS
    Linux命令收集
    【ASP.NET Core快速入门】(二)部署到IIS
    【ASP.NET Core快速入门】(一)环境安装
  • 原文地址:https://www.cnblogs.com/parzulpan/p/14135704.html
Copyright © 2011-2022 走看看