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">
			function ajaxRequest() {
// 				1、我们首先要创建XMLHttpRequest 
				var xmlhttprequest = new XMLHttpRequest();
// 				2、调用open方法设置请求参数
				xmlhttprequest.open("GET","http://localhost:8080/JavaWeb_Ajax_war_exploded/ajaxServlet?action=javaScriptAjax",true);
				//4、在send方法前绑定onreadystatechange事件,处理请求完成后的操作。
				xmlhttprequest.onreadystatechange = function () {
					if (xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200){

						var jsonObj = JSON.parse(xmlhttprequest.responseText);
						//把响应的数据显示在页面上
						document.getElementById("div01").innerHTML = "编号:"+jsonObj.id+",姓名:"+jsonObj.name;
					}
				}
// 				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&name=value 二:
  • success 请求成功,响应的回调函数
  • dataType 响应的数据类型 常用的数据类型有: text 表示纯文本 xml 表示 xml 数据 json 表示 json 对象
                                // ajax请求
				$("#ajaxBtn").click(function(){
					$.ajax({
						url:"http://localhost:8080/16_json_ajax_i18n/ajaxServlet",
						// data:"action=jQueryAjax",
						data:{action:"jQueryAjax"},
						type:"GET",
						success:function (data) {
							// alert("服务器返回的数据是:" + data);
							// var jsonObj = JSON.parse(data);
							$("#msg").html(" ajax 编号:" + data.id + " , 姓名:" + data.name);
						},
						dataType : "json"
					});
				});

$.get 方法和$.post 方法

  • url 请求的 url 地址

  • data 发送的数据

  • callback 成功的回调函数

  • type 返回的数据类型

                                // ajax--get请求
				$("#getBtn").click(function(){

					$.get("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryGet",function (data) {
						$("#msg").html(" get 编号:" + data.id + " , 姓名:" + data.name);
					},"json");
					
				});
				
				// ajax--post请求
				$("#postBtn").click(function(){
					// post请求
					$.post("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryPost",function (data) {
						$("#msg").html(" post 编号:" + data.id + " , 姓名:" + data.name);
					},"json");
					
				});

$.getJSON 方法

  • url 请求的 url 地址

  • data 发送给服务器的数据

  • callback 成功的回调函数

                                // ajax--getJson请求
				$("#getJSONBtn").click(function(){
					$.getJSON("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQueryGetJSON",function (data) {
						$("#msg").html(" getJSON 编号:" + data.id + " , 姓名:" + data.name);
					});
				});

表单序列化 serialize()

serialize()可以把表单中所有表单项的内容都获取到,并以 name=value&name=value 的形式进行拼接。

                                // ajax请求
				$("#submit").click(function(){
					// 把参数序列化
					$.getJSON("http://localhost:8080/16_json_ajax_i18n/ajaxServlet","action=jQuerySerialize&" + $("#form01").serialize(),function (data) {
						$("#msg").html(" Serialize 编号:" + data.id + " , 姓名:" + data.name);
					});
				});

使用Ajax验证用户名是否可用

protected void ajaxExistsUsername(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取请求的参数username
        String username = req.getParameter("username");
        // 调用userService.existsUsername();
        boolean existsUsername = userService.existsUsername(username);
        // 把返回的结果封装成为map对象
        Map<String,Object> resultMap = new HashMap<>();
        resultMap.put("existsUsername",existsUsername);

        Gson gson = new Gson();
        String json = gson.toJson(resultMap);

        resp.getWriter().write(json);
    }


                        // 页面加载完成之后
			$(function () {

				$("#username").blur(function () {
					//1 获取用户名
					var username = this.value;
					$.getJSON("http://localhost:8080/book/userServlet","action=ajaxExistsUsername&username=" + username,function (data) {
						if (data.existsUsername) {
							$("span.errorMsg").text("用户名已存在!");
						} else {
							$("span.errorMsg").text("用户名可用!");
						}
					});
				});
posted @ 2020-11-12 14:47  han_sh_zh  阅读(90)  评论(0编辑  收藏  举报