核心对象

本文介绍了XMLHttpRequest的核心对象,它是实现页面无刷新更新的关键。详细讲解了对象的属性,如ReadyState、ResponseText、ResponseXML、Status和Statustext,以及它们在不同状态下的意义和用法。通过理解这些属性,开发者可以更好地处理HTTP请求和响应,尤其是通过Onreadystatechange事件处理程序来获取和处理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念

核心对象是XMLHttpRequest,它可以提供不重新加载页面的情况下更新网页,在页面加载后在客户端向服务器请求数据,在页面加载后在服务器端接受数据,在后台向客户端发送数据。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。
XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。

属性

readyState 表示一种状态
Onreadystatechange每次状态改变所触发事件的事件处理程序
ResponseText从服务器进程返回的数据的字符串形式
ResponseXML从服务器进程返回的XML文档数据对象
Status从服务器返回的数字代码 404或200
StatusText 伴随状态码的字符串信息

ReadyState

01234 取值
未初始化,发送,发送,正在接受,已加载

Onreadystatechange 通常只需在readystate等于4时做数据的获取和处理工作

ResponseText

属性:
当readystate值为012,responseText包含一个空字符串
当readyState值为3,正接收,响应中包含客户端还未完成的响应信息
当readystate值为4,已加载,包含完整的响应信息,

ResponseXML

属性:用于当接收到完整的HTTP响应时,readystate 为4
描述XML响应。
此时content-type头部指定MIME类型为text/xml,application/xml或以xml结尾
如果不包含这些媒体类型之一 值为null
如果readystate不为4 值为null,是只是一个文档接口类型的对象
如果文档不是良构,或不支持文档相应的字符编码,ResponseXML的值为将为null

Status

属性
描述了HTTP状态码
类型为short
仅当readystate为3或者4时,属性才可用
当readystate小于3时,试图存取status的值将发生一个异常
常用的HTTP状态码
200请求成功
202请求被接受但处理未完成
400错误请求
404请求资源未找到
500内部服务器错误
可根据status获取的状态码对响应结果进行有针对性的处理

Statustext

属性
描述了HTTP状态码文本
并且仅当readystate为3或4时,才可以使用,当readystate为其他值时,试图存取将引发一个异常

案例
window.onload = function() {
			var btn = document.getElementById('btn');
			btn.onclick = function() {
				var uname = document.getElementById('username').value;
				var pass = document.getElementById('pass').value;
				//使用ajax发送请求
				// 1.创建XMLHttpRequest对象
					/*
					XMLHttpRequest 建立客户端和服务器端的通信
					
					var xhr = new XMLHttpRequest(); //标准浏览器 ie7-11 chrome firefox
					var xhr=new ActiveXObject("Microsoft.XMLHTTP"); //IE6
										
				*/
				//var xhr=new ActiveXObject("Microsoft.XMLHTTP");
				//console.log(xhr);
				//var xhr = new XMLHttpRequest();
				//console.log(xhr);


				//创建核心对象的标准写法
				var xhr=null;
				if(window.XMLHttpRequest){
					xhr=new XMLHttpRequest();//标准浏览器的写法
				}else{
					xhr=new ActiveXObject("Microsoft.XMLHTTP");//IE6
				}

				//非标准写法 异常捕获机制
				try{
					xhr=new XMLHttpRequest();
				}catch{
					xhr=new ActiveXObject("Microsoft.XMLHTTP");
				}


				// 2.准备发送
					/*
					参数一:请求方式(get获取数据  post提交数据)
					参数二:请求地址
					参数三:同步或者异步的标识符 默认true 表示异步 false 表示同步

					post 请求参数放在send中传递 不需要进行encodeURI编码
					必须设置请求头信息
				*/
				xhr.open('get','check.php?username=' + uname + '&password=' + pass, true);
				// 3.执行发送
				xhr.send(null);
				// 4.指定回调函数
				/*
					readyState
						0  对象创建成功
						1  表示已经发送了请求
						2  浏览器已经收到了服务器响应的数据
						3  正在解析数据
						4  数据解析完成  可以使用了
				*/
				xhr.onreadystatechange = function() {
					if (xhr.readyState == 4) {
						if (xhr.status =200) {
							var data = xhr.responseText;
							var info = document.getElementById('info');
							if (data == '1') {
								info.innerHTML = '登陆成功'
							}else {
								info.innerHTML = '用户名或密码错误';
							}
						}
					}
				}
			}
		}
<form>
		用户名:<input type="text" name="username" id="username">
		<span id="info"></span>
		<br>
		密码:<input type="password" name="pass" id="pass">
		<input type="button" value="登录" id="btn">
	</form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值