宝哥软件园

javascript学习笔记(七)Ajax和Http状态代码

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

Ajax及其工作原理

AJAX是一种无需刷新网页就能与服务器交换数据的技术。它最早由谷歌公司在谷歌地图中使用,并迅速流行起来。

AJAX不能跨域。如果需要跨域,可以使用document . domain=' a.com ';或者使用服务器代理,代理XMLHttpRequest文件

AJAX基于现有的互联网标准,并联合使用它们:

XMLHttpRequest对象(与服务器异步交换数据)JavaScript/DOM(信息显示/交互)CSS(定义数据的样式)XML(作为转换数据的格式)

创建一个XMLHttpRequest对象

XMLHttpRequest对象内置于所有现代浏览器(IE7、火狐、Chrome、Safari和Opera)中。

要创建一个Ajax对象:

var oAjax之上的IE6=new XMLHttpRequest();

//ie6var oajax=连接到服务器的新ActiveX object(' Microsoft . xmlhttp ')

OAjax.open(方法、url、异步与否)众所周知,Ajax是“异步Javascript和XML”,指的是一种用于创建交互式web应用程序的web开发技术。因此,Ajax天生以异步模式工作(异步为真,同步为假)

同步和异步

同步是指发送方发送数据,等待接收方发回响应后再发送下一个数据包的通信方式。异步是指发送方发送数据,然后发送下一个数据包,而不等待接收方发回响应的通信模式。(简单来说,同步意味着只能做一件事,而异步意味着可以同时做很多事)

发送请求发送()

复制的代码如下:脚本类型=' text/JavaScript '函数getdoc(){ var xmlhttp;if(window . XMLHttpRequest){ xmlhttp=new XMLHttpRequest();} else { xmlhttp=new ActiveX object(' Microsoft。XMLHTTP’);//for ie6 } xmlhttp . onreadystatechange=function(){ if(xmlhttp . readystate==4xmlhttp . status==200){ document.getelementbyid('myid').innerHTML=xmlhttp . responsetext;} } xmlhttp.open('GET',index.php,true);xmlhttp . send();}/script/headbody按钮类型=' button' onclick=' getdoc()'请求数据/按钮/正文

获取还是发布?

与POST相比,GET更简单、更快速,大多数情况下都可以使用。

但是,在以下情况下,请使用开机自检请求:

无法使用缓存文件向服务器发送大量数据(更新服务器上的文件或数据库)(POST没有数据限制)。当发送包含未知字符的用户输入时,POST比GET接收返回的信息更稳定、更可靠

阿贾克斯。onreadystatechange=当请求状态改变时要调用的函数(){//事件处理程序

alert(oajax . readystate);

}每当readyState属性值更改时,readystate更改事件都会触发一次。该事件可用于检测每次状态变化后的就绪状态值。一般来说,我们只对readyState值为4的阶段感兴趣,因为此时所有数据都准备好了,但是在调用open()之前必须指定onreadystatechange事件处理程序,以确保跨浏览器的兼容性。让我们看一个例子:

复制代码如下: var xhr=create xhr();xhr . onreadystatechange=function(){ if(xhr . readystate==4){ if((xhr . status=200 xhr . status 300)| | xhr . status==304){ alert(xhr . statustext);} else { alert('请求不成功: ' xhr . status);} }};xhr.open('get ',' example.txt ',true);xhr . send(null);

XHR物体

当XHR对象向服务器发送一个HTTP请求时,它将经历几个状态,直到请求被处理后才收到响应。ReadyState是XHR请求的状态属性,它有五个属性值:

0(未初始化)尚未调用open()方法1(已加载)调用了send()方法,并且正在发送请求2(已加载)。send()方法已完成,所有响应内容都已收到。3(已解析)正在解析响应内容。4(已完成)解析响应内容,客户端可以再次使用状态

status属性指示从服务器返回的响应状态代码。比如200表示成功,404表示没找到。

1前缀:消息。这种类型的状态代码表示请求已被接受,需要继续处理。前缀:成功。这种类型的状态代码表示服务器已经成功接收、理解并接受了请求。3前缀:重定向。这种类型的状态代码表示客户端需要采取进一步的操作来完成请求。4前缀:客户端错误。这种状态代码表明客户端可能出现了错误,这阻碍了服务器的处理。5前缀:服务器错误。这种状态代码表示服务器在处理请求的过程中出现错误或异常状态

附:http状态码详细说明

状态文本

StatusText是响应返回的文本信息,只有readyState值为3或4时才能使用。当readyState是另一个值时,访问statusText属性的视图将引发异常。

XHR的方法

方法描述abort()导致当前正在执行的请求被取消。getAllResponseHeaders()返回包含所有响应头的名称和值的单个字符| string getResponseHeader(name)返回响应头open(方法、url、异步、用户名、Pwd)中指定的名称和值设置HTTP方法(get或post)和send(content)以发送具有指定主题内容的请求。setRequestHeader(name,value)使用指定的名称和值设置请求头复制代码如下: Script Type=' text/JavaScript ' var o Ajax=o Ajax();alert(oajax . readystate);//弹出' 0' o ajax.open ('get ',' index.html ',true);alert(oajax . readystate);//弹出‘1’oajax . send(null);alert(oajax . readystate);//IE下弹出//4,而火狐是2。//可以通过readystatechange事件监控oAjax=XHR();oajax . onreadystatechange=function(){ alert(oajax . readystate);//火狐依次是1、2、3、4,但最后还会有一个1。//IE为1,1,3,4 };oAjax.open('get ',' index.txt ',true);oajax . send(null);/script

更多资讯
游戏推荐
更多+