Web層改進II-用xmlhttp 無聲息提交復雜表單
更新時間:2007年01月22日 00:00:00 作者:
xmlhttp是在RIA時代沒有來臨之前,最能使B/S程序遠離每個動作刷新一次頁面的痛苦做法,同時也是最平民化的一項技
術,HelloWord幾句話就完成了。
不過,大家對xmlhttp的應用大多只以Get方式在URL里傳遞少數(shù)的變量。其實即使是大量數(shù)據(jù)的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方式(不受長度限制)發(fā)送給服務
器端。
又是經典的中文編碼問題,需要加多一個URLEncoding函數(shù)把變量值的字符串編成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
服務器端
沒有任何需要特別作的東西,如常響應請求就是了。
術,HelloWord幾句話就完成了。
不過,大家對xmlhttp的應用大多只以Get方式在URL里傳遞少數(shù)的變量。其實即使是大量數(shù)據(jù)的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方式(不受長度限制)發(fā)送給服務
器端。
又是經典的中文編碼問題,需要加多一個URLEncoding函數(shù)把變量值的字符串編成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
服務器端
沒有任何需要特別作的東西,如常響應請求就是了。
相關文章
javascript 正則表達式觸發(fā)函數(shù)進行高級替換
如果在正則表達式中定義了子匹配,那么參數(shù)的長度會隨著子匹配的個數(shù)改變,如果沒有定義子匹配,那么長度是固定的。2010-03-03JavaScript 雙向鏈表操作實例分析【創(chuàng)建、增加、查找、刪除等】
這篇文章主要介紹了JavaScript 雙向鏈表操作,結合實例形式分析了JavaScript雙向鏈表的創(chuàng)建、增加、查找、刪除等相關操作技巧,需要的朋友可以參考下2020-04-04js實現(xiàn)的點擊數(shù)量加一可操作數(shù)據(jù)庫
這篇文章主要介紹了js如何實現(xiàn)的點擊數(shù)量加一操作數(shù)據(jù)庫,需要的朋友可以參考下2014-05-05