Ajax—了解XMLHttpRequest对象

本文详细解析了AJAX中的XMLHttpRequest对象及其关键方法,包括open、send、abort、getallresponseheaders、getResponseHeader和setRequestHeader,旨在帮助开发者更高效地进行异步数据交互。

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


======================================================
注:本文源代码点此下载
======================================================

ajax的一个重要对象:xmlhttprequest,它的几个方法

open():建立到服务器的新请求。

send():向服务器发送请求。

abort():退出当前请求。

getallresponseheaders():把http请求的所有响应首部作为键/值对返回。

getresponseheader(“header”):返回指定首部值。

setrequestheader(“header”,”ualue”):把指定首部设置为所提供的值。在设置任何首部之前必须先调用open()。

下面详细地讨论这些方法

void open(string method,string url,bollean asynch,string username,string password):这个方法会建立对服务器的调用。这是初始化一个请求的纯脚本方法。它有两个必要的参数,还有3个可选参数。要提供调用的特定方法(get、post、put),还要提供所调用资源的url。另外还可以传递一个boolean值,旨示这个调用是异步的还是同步的。默认值为true,表示请求本质上是异步的。如果这个参数为false,处理就会等待,直到从服务器返回响应为止。由于异步调用是使用ajax的主要优势之一,所以倘若将这个参数设置为false,从某些程度上讲与使用xmlhttprequest对象的初衷不太相符。不过,在某些情况下这个参数设置为false也是有用的,比如在持久存储页面之前可以先验证用户的输入。最后两个参数,允许指定一个特定的用户名和密码。

void send(content):这个方法具体向服务器发出请求。如果请求声明为异步的,这个方法就会立即返回,否则它会等待直到接收到响应为止。可选参数可以是dom对象的实例、输入流或者串。传入这个方法的内容会作为请求的一部分发送。

void setrequestheader(string header,string value):这个方法为http请求中一个给定的首部设置值。需要说明,这个方法必须在调用open()之后才能调用。

在这些方法中最有可以用到的就是open()和send()。

void abort():顾名思义,这个方法就是要停止请求。

string getresponseheader(string header):这个方法与getallresponseheaders()是对应的,不这过它有一个参数表示你希望得到的指定首部值,并且把这个值作为串返回。

除了这些方法,xmlhttprequest对象还提供了许多属性:

responsetext:服务器返回的请求响应文本。

responsexml:服务器的响应,表示为xml.这个对象可以解析为一个dom对象。

status:服务器的http状态码(200对应ok,404对应not found….)

statustext:http状态码的相应文本(ok或not found)

#所有这些代码都直接嵌套在 script 标记中。不放到方法或函数体中的 javascript 代码称为静态 javascript。就是说代码是在页面显示给用户之前的某个时候运行。

xmlhttprequest 惟一的目的是让您发送请求和接收响应。其他一切都是 javascript、css 或页面中其他代码的工作:改变用户界面、切换图像、解释服务器返回的数据。准备好 xmlhttprequest 之后,就可以向服务器发送请求了。

onreadystatechange属性;

需要特别注意的是该属性在代码中设置的位置 —— 它是在调用 send() 之前 设置的。发送请求之前必须设置该属性,这样服务器在回答完成请求之后

readystate:提供当前 html 的就绪状态。

http 就绪状态表示请求的状态或情形。它用于确定该请求是否已经开始、是否得到了响应或者请求/响应模型是否已经完成。它还可以帮助确定读取服务器提供的响应文本或数据是否安全。在 ajax 应用程序中需要了解五种就绪状态:

0:请求没有发出(在调用 open() 之前)。

1:请求已经建立但还没有发出(调用 send() 之前)。

2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。

3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。

4:响应已完成,可以访问服务器响应并使用它。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值