AJAX:

Asynchronous JavaScript and XML。现在允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.(B/S:前后端分离)

使用场景举例:

在百度等搜索引擎打出xxs时输入框会自动弹出相关的信息、网页地图放大或者缩小时并不会刷新网页等。

原理:

使用ajax与服务器交互时,发送以及接收的信息是特殊数据格式,而非整个网页程序,因此不需要刷新。即数据在客户端与服务器之间独立传输。服务器不再返回整个页面,而只返回可用信息。

发送Ajax请求步骤:

1.调用open方法,代表预备发送请求。

2.如果请求类型为POST,则需设定响应头。

3.发送http请求指令,传递参数。

4.声明请求状态改变的回调函数,接收服务器响应信息。

java 获取ajax请求的域名 ajax请求获取数据_java 获取ajax请求的域名

readyState:表示Ajax请求的当前状态,取值范围如下:

0 代表未初始化。 还没有调用 open 方法
1 代表正在加载。 open 方法已被调用,但 send 方法还没有被调用
2 代表已加载完毕。send 已被调用。请求已经开始
3 代表交互中。
4 代表完成。响应发送完毕。(一般情况下只需判断此状态即可)。

status:服务器发送的响应状态码,常用状态码及其含义:

404 没找到页面(not found)
403 禁止访问(forbidden)
500 内部服务器出错(internal service error)
200 一切正常(ok)
304 没有被修改(not modified)

注意:通过XHR.status和200比较,可以确保服务器是否已发送了一个成功的响应

json文件的内容:

"{\"user\":\"zhangsan\",\"age\":19,\"date\":\"2019-09-23T02:55:11.945Z\",\"money\":[1,2,3]}"
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			// js里XMLHttpRequest类似于python里的request、urlib
			// XHR是XMLHttpRequest对象的缩写,封装在window对象中,封装了发送AJAX请求、接收响应的属性以及方法。
			// 如果XMLHttpRequest对象存在,则把 xhr 的值设为该对象的新实例。如果不存在,就去检测 ActiveObject 的实例是否             	
			//存在,如果答案是肯定的,则把微软 XMLHTTP 的新实例赋给 xhr
			function getXHR(){
				if(window.XMLHttpRequest){
					return new window.XMLHttpRequest()
				}else{
					// 解决微软的特殊情况
					new window.ActiveXObject('Microsoft.XMLHTTP')
				}
			}
			//异步请求数据函数
			function jsonData(){
				var xhr = getXHR()  //局部化,防止冲突
				xhr.open('GET','data.json')
				//xhr.setRequestHeader()
				xhr.send(null)
				xhr.onreadystatechange=function(){
					if(xhr.readyState ==4 && xhr.status==200){
						//得到服务器返回的jaon字符串
						resp = xhr.responseText
						htmlText = ''
						//解析字符串为json对象,解析两遍是因为JSON.parase(resp)是字符串类型
						jsonObj = JSON.parse(JSON.parse(resp))
						//console.log(typeof(jsonObj))  //查看类型
						//组织显示html格式
						htmlText = '<tr><td>' + jsonObj.user +'</td></tr>'
						document.getElementById('userData').innerHTML = htmlText
					}
				}
			}
			
//			function setInnerHTML(id,text){
//				document.getElementById(id).innerHTML = htmlText
//			}
		</script>
	</head>
	<body>
		<input type="button" value="加载" onclick="jsonData()"/>
		<table>
			<thead>
				<tr><td>用户名</td></tr>
			</thead>
			<tbody id='userData'> </tbody>
		</table>
	</body>
</html>