Ajax使用的四大步骤【1理论篇】

经过总结使用Ajax可以分为四步,分别如下:

1:创建引擎(xmlHttpRequest对象)

不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的,针对IE使用ActiveXObject,针对其他浏览器用xmlHttpRequest,但是如果针对不同版本的的浏览器可以使用“try and catch”语句来进行创建

2:事件处理函数,处理服务器的响应结果。

onreadystatechange事件:该事件处理函数由服务器触发,而不是用户,相当于监听,监听服务器每个动作

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)(服务器返回304状态,表示源文件没有被修改 )        

responseText属性包含了从服务器发送的数据

每次 readyState 值的改变,都会触发 readystatechange 事件             

3:打开一个连接open(method, url, asynch)

允许客户端用一个Ajax调用向服务器发送请求。

  三个参数的含义如下:

  method:请求类型,类似 “GET”或”POST”的字符串
  url:请求路径字符串,指向所请求的服务器上的那个文件(servlet,jsp,action)
  asynch:表示请求是否要异步传输,默认值为true(异步)

4:发送数据send(data)

data:向服务器发的数据,如果是get方式data为null就行,即使传了参数,服务器也收不到。如果为post方式在send(data)之前还要设置requestHeader("Content-Type","application/x-www-form-urlencoded")。


Ajax使用的四大步骤【1理论篇】_第1张图片

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demo</title>
<style>
body, input, select, button, h1 {
	font-size: 28px;
	line-height:1.7;
}
</style>	
</head>

<body>

<h1>员工查询</h1>

<label>请输入员工编号:</label>
<input type="text" id="keyword" />
<button id="search">查询</button>
<p id="searchResult"></p>

<h1>员工新建</h1>
<label>请输入员工姓名:</label>
<input type="text" id="staffName" /><br>
<label>请输入员工编号:</label>
<input type="text" id="staffNumber" /><br>
<label>请选择员工性别:</label>
<select id="staffSex">
<option>女</option>
<option>男</option>
</select><br>
<label>请输入员工职位:</label>
<input type="text" id="staffJob" /><br>
<button id="save">保存</button>
<p id="createResult"></p>

<script>
document.getElementById("search").onclick = function() { 
	var request = new XMLHttpRequest();
	request.open("GET", "server.php?number=" + document.getElementById("keyword").value);
	request.send();
	request.onreadystatechange = function() {
		if (request.readyState===4) {
			if (request.status===200) { 
				document.getElementById("searchResult").innerHTML = request.responseText;
			} else {
				alert("发生错误:" + request.status);
			}
		} 
	}
}

document.getElementById("save").onclick = function() { 
	var request = new XMLHttpRequest();
	request.open("POST", "server.php");
	var data = "name=" + document.getElementById("staffName").value 
	                  + "&number=" + document.getElementById("staffNumber").value 
	                  + "&sex=" + document.getElementById("staffSex").value 
	                  + "&job=" + document.getElementById("staffJob").value;
	request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
	request.send(data);
	request.onreadystatechange = function() {
		if (request.readyState===4) {
			if (request.status===200) { 
				document.getElementById("createResult").innerHTML = request.responseText;
			} else {
				alert("发生错误:" + request.status);
			}
		} 
	}
}
</script>
</body>
</html>

你可能感兴趣的:(Ajax,函数,异步,web前端,XMLhttpREquest)