AJAXRequest
AJAXRequest类的构造函数
构造一个AJAXRequest类的实例,可以很方便的用new来实现:
- var ajax=new AJAXRequest();
在创建AJAXRequest类的实例的时候,也可以通过使用加上参数的构造函数初始化一起属性,比如编码,通用回调函数等。
- // 使用带参数的构造函数
- // 使用 {} 来创建一个匿名对象,包含初始化参数
- var ajax=new AJAXRequest({
- // 设置默认请求地址
- url: "test.asp",
- // 设置默认请求方式
- method: "GET",
- // 设置默认正常响应时的回调函数
- oncomplete: function(obj) { alert(obj.responseText; },
- // 设置超时时间
- timeout: 10000,
- // 超时时提醒用户通信中超时,请用户重新操作
- ontimeout: function(obj) { alert("很抱歉,由于网络问题,与服务器的通信超时,请重新操作。") },
- // 设置数据编码为GB2312
- charset: "GB2312"
- });
- 更多初始化参数可以参考AJAXRequest开发者手册。
AJAXRequest类的方法
AJAXRequest封装了一系列的方法来完成AJAX应用程序中常用的操作。
在AJAXRequest类方法的定义中,如果参数以方括号[]括起来,说明此参数可选,在调用方法可以不指定此参数。注意,参数的省略是从后往前 的,即在调用方法时如果不指定参数,则最先省略的是最后一个参数,然后依次往前省略。在省略参数时,AJAXRequest类会使用类实例的全局属性,像 url、oncomplete等。
get([url],[callback])
get方法从客户端发判定个GET请求到服务端,并在服务端返回的时候调用回调函数callback进行处理。get方法带有两个参数,url指定请求发送到的地址,callback指定服务端返回时的回调函数。在一般情况下,get方法可以这样使用:
- function mycallback(xmlobj) {
- // 处理代码
- }
- var ajax=new AJAXRequest();
- ajax.get(
- // 请求的地址
- "do.asp",
- // 回调函数,注意,是回调函数名,不要带括号
- mycallback
- );
或者已经指定了设置了ajax的url及oncomplete属性,可以直接这样调用:
- var ajax=new AJAXRequest();
- // 设置url属性
- ajax.url="do.asp";
- // 设置oncomplete属性
- ajax.oncomplete=mycallback;
- // 使用默认值调用get方法
- ajax.get();
- function mycallback(xmlobj) {
- // 处理代码
- }
因此,可以通过设置AJAXRequest类实例的url及oncomplete属性来将同一类操作放到一个AJAXRequest类实例中,在之后的使用中就可以直接使用ajax.get()而不必加上参数。
post([url],[content],[callback])
post方法在客户端使用POST方式发送一个请求到服务端,一般在发送大量数据时使用。一般使用方法如下:
- var ajax=new AJAXRequest();
- ajax.post(
- // 将数据发送到getdata.asp
- "getdata.asp",
- // 发送的数据为“要发送的数据”
- "要发送的数据",
- // 回调函数,用消息框显示服务端的返回内容
- function(obj) { alert(obj.responseText); }
- );
postf(form_obj,[callback],[url],[method])
postf方法使用POST方式发送指定的表单到指定的地址,其中表单可以以form_obj直接指定,或者使用字符串指定要发送的表单的ID值。 在默认情况下,postf方法的请求地址和方法分别使用表单的action和method属性,但参数中的url和method优先级大于表单的属性,因 此,如果想将表单用不同的方式发送到另外的地址,可以通过指定url和method参数来实现。例如,postf方法一般可以这样使用:
HTML部分:
- <form id="loginform" name="loginform" action="login.asp" method="post">
- 用户:<input type="text" name="username" size="20" /><br />
- 密码:<input type="password" name="password" size="20" /><br />
- <input type="button" onclick="AjaxLogin();" value="登录" />
- </form>
JavaScript部分:
- var ajax=new AJAXRequest();
- function AjaxLogin() {
- ajax.postf(
- // 使用指定表单对象的方式来发送表单
- document.getElementById("loginform"),
- // 回调函数,显示服务端返回的信息
- function(obj) { alert(obj.responseText); }
- );
- }
或者通过指定表单ID的方式来发送表单:
- var ajax=new AJAXRequest();
- function AjaxLogin() {
- ajax.postf(
- // 使用指定表单ID的方式来发送表单
- "loginform",
- // 回调函数,显示服务端返回的信息
- function(obj) { alert(obj.responseText); }
- );
- }
如果要将数据发送到另外的页面,可以指定url和method参数:
- var ajax=new AJAXRequest();
- function AjaxLogin() {
- ajax.postf(
- // 使用指定表单ID的方式来发送表单
- "loginform",
- // 回调函数,显示服务端返回的信息
- function(obj) { alert(obj.responseText); },
- // url参数,数据发送到anotherlogin.asp
- "anotherlogin.asp",
- // method参数,使用GET方式发送请求
- "GET"
- );
- }
update([update_obj],[url],[update_interval],[update_times])
update方法使用GET方式发送请求到服务端,并将服务端返回的内容更新到指定的对象,指定的对象可以为INPUT或TEXTAREA,也可以 为其他带innerHTML属性的元素。并且可以指定update_interval和update_times来实现定时定量更新。在不指定 update_times参数时,update方法将以update_interval参数指定的时间间隔不间断更新指定对象,直至用户取消更新。
update_obj可以是指定的对象,也可以是指定对象的ID。
在指定update_interval参数但不指定update_times参数时,update方法将返回一个定时器对象,可以通过 clearInterval(返回值)的方式来取消更新。如果update_interval和update_times参数都不指定,update方法 将只更新一次。例如:
HTML部分:
- <div id="updateobj">
- </div>
JavaScript部分:
- var ajax=new AJAXRequest();
- ajax.update(
- // 更新
- "updateobj",
- // 更新内容来自update.asp
- "update.asp"
- );
或者每隔1秒不间断更新:
- var ajax=new AJAXRequest();
- ajax.update(
- // 更新
- "updateobj",
- // 更新内容来自update.asp
- "update.asp"
- // 更新间隔,毫秒为单位,1000为1秒
- 1000
- );
或者间隔1秒,更新3次:
- var ajax=new AJAXRequest();
- ajax.update(
- // 更新
- "updateobj",
- // 更新内容来自update.asp
- "update.asp"
- // 更新间隔,毫秒为单位,1000为1秒
- 1000,
- // 更新次数
- 3
- );
小结
这篇教程中,我们了解了AJAXRequest类的方法以及具体使用方法。