AJAX基础

Posted 再来半包

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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对象,然后回传给客户端用户名是否可用



页面根据回传的结果,提示用户是否可用 

以上是关于AJAX基础的主要内容,如果未能解决你的问题,请参考以下文章

AJAX相关JS代码片段和部分浏览器模型

Javascript代码片段在drupal中不起作用

前端面试题之手写promise

Ajax 片段元标记 - Googlebot 未读取页面内容

执行AJAX返回HTML片段中的JavaScript脚本

[vscode]--HTML代码片段(基础版,reactvuejquery)