Web層改進II-用xmlhttp 無聲息提交復雜表單
2024-09-06 12:43:43
供稿:網友
xmlhttp是在RIA時代沒有來臨之前,最能使B/S程序遠離每個動作刷新一次頁面的痛苦做法,同時也是最平民化的一項技
術,HelloWord幾句話就完成了。
不過,大家對xmlhttp的應用大多只以Get方式在URL里傳遞少數的變量。其實即使是大量數據的Form,,只要用
Javascript稍加封裝,,一樣可以用簡單的用xmlhttp完成提交,真正做到讓用家賓至如歸,不到頁面本身需要刷新的時候
,決不去刷新用家的界面。
客戶端:
function xmlhttp_submit(form_object,url)
for i = 0 to form_object.elements.length-1
set elem = form_object.elements(i)
form_value=form_value & URLEncoding(elem.name) & "=" & URLEncoding(elem.value) &"&"
Next
set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "POST",url,false
xmlhttp.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
xmlhttp.send(form_value)
end function
上面這段代碼遍歷了form里的對象,組裝出form_value字串,然后通過send()方法以POST方式(不受長度限制)發送給服務
器端。
又是經典的中文編碼問題,需要加多一個URLEncoding函數把變量值的字符串編成UTF-8格式,也因此要采用自己不熟悉的
VBScript來寫form_submit() 。
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChrElse
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 IfNext
URLEncoding = strReturn
End Function
服務器端
沒有任何需要特別作的東西,如常響應請求就是了。