感冒了一阵,继续学习,整理一下前段写的代码
一、xmlHttpRequest
Ajax中一个关键的是xmlHttpRequest对象,xmlHttpRequest对象目前还不是W3C标准,因而在写代码中要注意不同浏览器的兼容性
var xmlHttp;
function CreateObject) {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
xmlHttpRequest的几个主要方法和属性
Open("method","url","asynch")
asynch默认为false,如果不填写true就同步方式,感觉这个参数应该默认为true
使用异步方式需要对OnReadStateChange触发事件进行编程,得到response,
有三种方式
1.xmlHttp.responseText
2.xmlHttp.responseXML
3.xmlHttp.responseBody
第一种通常只是测试或者使用简单返回信息
第二种是直接返回一个xml对象,用于操作返回的DOM对象
第三种非常有用,在返回结果中带有中文字符就需要用到这个了,具体后面在说
还需要用到两个属性
ReadyState
status
二、DOM
DOM是一个W3C约定,我的理解DOM将html的元素作为层次对象管理起来的一个模型,没有xmlHttp,就无法实现方便得与服务器通讯,而没有DOM则任何通讯也是无意义得,DOM能让你很好得操作界面,快速找到需要操作的内容。但目前好像ie和其他浏览器的DOM使用方式略有差异,DOM使Javascript编程充满了生命力
关于html的DOM的使用可以去网山搜一下,对于每个元素(table,form,etc)都有特殊的属性方法,这里列举一下用于处理XML的DOM元素属性
childnodes
firstchild
lastchild
nextsibling
nodevalue
parentnode
previoussibling
这些属性从名字上直接可以看出用途,和delphi中XMLDocument或MS XML用法类似,常用的方法有
getElementByID(ID)
GetElementByTagName(name)
hasChildNodes()
GetAttribute(name)
三、编码
Ajax中使用的字符编码默认是UTF-8,这在老外使用没有任何问题,但是我们使用中文时需要用到GB2312,查了很多资料,没有什么特别好的办法,最方便的做法就是引用网上一个牛人写的转码函数
<SCRIPT language="VBScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)/ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
</SCRIPT>
用了一下,很好使,不过得用刚才所说得responseBody,而不能用ResponseText。