以前一直以为XMLHTTP只能在IE中使用,所以一开始没有考虑它,前几天Dark
让我帮他修改一个WP的插件livesearch,其中就是使用的xmlhttp,分析源码和查看msdn上的相关资料后,基本实现了所需要的功能。效果不错。
xmlhttp对象的创建方法(不同浏览器)
if (window.XMLHttpRequest) {
var objSrvHTTP = new XMLHttpRequest();
} else {
var objSrvHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}
以前一直使用xmlhttp的同步方式,会造成浏览器短时间没有响应,所以使用异步方式:
with(objSrvHTTP){
try{
open("GET",strUrl, true);
send(null);
onreadystatechange = getReady
}
catch(e){
}
}
对象状态发生变化时调用getReady
function getReady(){
if(objSrvHTTP.readyState == 4) {
var s = objSrvHTTP.responseText;
if(s != ""){
eval(s);
}
}
}
这就是几个比较关键的地方,希望对以后的应用有所帮助!
附:XMLHTTP对象的属性和方法列表:
Name Type Description
onreadystatechange
N/A 指定当就绪状态发生改变时调用的事件处理函数,仅用于异步操作
readyState
Long 异步操作的状态:未初始化(0),正在加载(1),已加载(2),交互(3),已完成(4)
responseBody Variant 将响应信息正文作为unsigned
byte数组返回
responseStream Variant 将响应信息正文作为一个ADO
Stream对象返回
responseText
String 将响应信息正文作为一个文本字符串返回
responseXML
Object 通过XMLDom将响应信息正文解析为XMLDocument对象
status Long 服务器返回的HTTP状态码
statusText String 服务器HTTP响应行状态
------------------------------------------------------
Name Desciption
abort 取消当前 HTTP 请求
getAllResponseHeaders 从响应信息中检索所有的标头字段
getResponseHeader 从响应信息正文中获得一个 HTTP 标头值
open(method, url, boolAsync, bstrUser, bstrPassword) 打开一个与
HTTP 服务器的连接
send(varBody) 设定一个请求的标头字段
setRequestHeader(bstrHeader, bstrValue) 向 HTTP
服务器发送请求。可包含正文。
------------------------------------------------------
open方法:
Parameter Description
method HTTP的通信方式,比如GET, HEAD, POST, PUT, DELETE,
CONNECT等
url 接收数据的服务器的URL地址,URL可带QueryString
boolAsync 一个布尔标识,说明请求是否为异步的。如果是异步通信方式,客户端就不等待服务器的响应;如果是同步方式,客户机会等到服务器返回消息后才去执行其它操作
bstrUser 用户ID,用于服务器身份验证
bstrPassword 用户密码,用于服务器身份验证