Ajax小示例

来源:互联网 发布:店铺怎么用淘宝客 编辑:程序博客网 时间:2024/06/14 10:51
<script>
var Ajax;
function CreateAjax()
{
    if (window.XMLHttpRequest)
        {
            Ajax=new XMLHttpRequest();
        }
    else if(window.ActiveXObject)
        {
            Ajax=new ActiveXObject("Microsoft.XMLHttp");
        }
}
function SendData(url_,sendtext_)
{

    Ajax.open("POST",url_,true);
    Ajax.onreadystatechange=checkuser;
    Ajax.send(sendtext_);
}
function CheckAjaxStatus(Ajax_)
{
    if(Ajax_.readyState==4)
    if(Ajax_.status==200)
        return true;
    return false;
}
function checkuser()
{
if(!CheckAjaxStatus(Ajax_)) return;

}
function checkusername()
{

    CreateAjax();
    SendData("ajaxusername.jsp","username="+name);
}

</script>

解析:

一.XMLHttpRequest的属性和方法:

abort():停止当前请求

getAllResponseHeaders():把所有Http请求的响应首部作为键值对返回

getResponseHeader("header"):返回指定首部的串值

void open(string method, string url, boolean 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()之后才能调用。

二.(window.ActiveXObject) 什么意思?
解:判断浏览器是否支持ActiveX控件,如果浏览器支持ActiveX控件可以利用
var xml=new ActiveXObject("Microsoft.XMLHTTP");创建XMLHttpRequest 对象(这是在IE7以前的版本中);在较新的IE版本中可以利用 var xml=new ActiveXObject("Msxml2.XMLHTTP")的形式创建XMLHttpRequest对象;而在IE7及非IE浏览器中可以利用var xml=new XMLHttpRequest()创建XMLHttpRequest对象。

创建XMLHttpRequest 对象,必须考虑到浏览器兼容问题 

三.使用XMLHTTPRequest对象发送请求和处理响应之前,我们必须要用javascript创建一个XMLHTTPRequest对象。(IE把XMLHTTPRequest实现为一个ActiveX对象,其他的浏览器[如Firefox/Safari/Opear]则把它实现为一个本地的javascript对象)。

四.onreadystatechange方法:

onreadystatechange 事件是微软对 IE 浏览器的私有事件扩充,所有元素都存在 onreadystatechange 事件。
下列元素对象总可以触发此事件,因为他们均会加载数据:APPLET,DOCUMENT,FRAME,FRAMESET,IFRAME,IMG,LINK,OBJECT,SCRIPT 和 XML 元素。
其他元素对象仅当 DHTML Behavior 被追加后会触发 onreadystatechange 事件。

5.readyState属性:

0:表示未初始化,new完后

1:已打开,对象已经创建并初始化,但还未调用send方法

2:已经调用send方法,但该对象正在等待状态码和头的返回

3:已经正在接收数据,但是对象和头的信息不完整。

4:已经接收完毕,所有数据加载完毕。

complete一般相对于js判断文件(图片、swf、脚本文件...)加载状态时使用:0-UNINITIALIZED:XML 对象被产生,但没有任何文件被加载。 1-LOADING:加载程序进行中,但文件尚未开始解析。 2-LOADED:部分的文件已经加载且进行解析,但对象模型尚未生效。 3-INTERACTIVE:仅对已加载的部分文件有效,在此情况下,对象模型是有效但只读的。 4-COMPLETED:文件已完全加载,代表加载成功。在开发中, 两者都表示已经接收到响应数据。
六.status状态属性值:

100系列码
从100到199范围的HTTP状态码是信息报告码。基于各种原因考虑,大多数情况下我们 是很少看见这些代码的。首先,如果一个浏览器尝试访问一个网站,而网站返回这些代码时,它们往往都不会显示在屏幕上。它们只是浏览器使引用的内部码。另 外,这些代码不常见的另外一个原因是起初HTTP标准不允许使用这一范围的状态码。就其本身而言,它们也一直没有被广泛地使用。
200系列码
从200到299范围的状态码是操作成功代码。同样的,在正常的Web上网中,你也很可能 不曾在屏幕上看到这些代码。相反的,这些代码是在浏览器内部使用的,用以确认操作成功确认和当前请求状态。虽然这些代码通常不显示,但是有一些故障排除工 具能够读到它们,就像和其它大多数的HTTP状态码一样,它们在错误诊断过程中是非常有用的。
300系列码
从300到399范围的状态码是重定向代码。本质上,它们告诉Web浏览器必须执行其它一 些操作以完成请求。基于这个命令的特点,它可以自动地执行,或者要求额外的用户输入。比如,状态码301表示一个特定资源已经被永久地先移除,因此将来所 有访问该资源请求都应该定向到一个特定的URL上。
400系列码
在400范围的状态码是客户端错误码。这种类型的错误码往往跟安全相关。比如,如果一个客 户端尝试访问一个未授权访问的资源,服务器就会返回一个状态码401。类似地,如果客户端尝试访问一个禁止的资源,在这种情况下客户端的认证状态是一样 的,那么服务器可能会返回一个状态码403,表示禁止对该资源进行访问。

400 Bad Request:表示你提交的数据格式不被服务端认可,或者说是无效的数据格式

404 not found

200 OK


0 0
原创粉丝点击