经典JavaScript与VBScript实用技巧:POST提交、组件检测、数据库连接及数据岛应用

作者:谷雨时间:2026-10-29 09:05:09浏览:223

本文汇总了经典Web开发中的多项实用技巧,涵盖使用VBScript进行URL编码并通过XMLHTTP组件执行POST请求、检测ActiveX组件安装状态、验证URL有效性,以及利用ADODB连接SQL Server数据库并动态生成HTML表格。此外,还介绍了通过XML数据岛实现前端数据绑定与导航,以及解析URL参数和模拟可编辑下拉列表的具体代码实现。

使用VBScript进行URL编码与XMLHTTP POST提交

// 使用POST方法替代传统FORM表单提交


<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


dim strA,oReq


strA = URLEncoding("submit1=Submit&text1=中文")


set oReq = CreateObject("MSXML2.XMLHTTP")


oReq.open "POST","http://ServerName/VDir/TstResult.asp",false


oReq.setRequestHeader "Content-Length",Len(strA)


oReq.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"


oReq.send strA


msgbox bytes2BSTR(oReq.responseBody)


</SCRIPT>


ActiveX组件检测与URL有效性验证

// readyState属性表示XMLHTTP返回数据的进度状态:0=载入中, 1=未初始化, 2=已载入, 3=运行中, 4=完成



// 检测指定组件是否已安装


isComponentInstalled("{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}", "componentID"))



// 检查指定网页URL是否存在且可访问


function CheckURL(URL)


{ 

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


xmlhttp.Open("GET",URL, false);


try


  {  

xmlhttp.Send();


var result = xmlhttp.status;


  } 

catch(e) {return(false); }


if(result==200)


  {  

return true;


  } 

xmlhttp = null;


return false;


} 

利用ADODB连接数据库并动态生成HTML表格

// 建立数据库连接并读取数据



<script language="javascript">


// 使用 JavaScript 编写服务器端连接数据库的代码示例


var conn = new ActiveXObject("ADODB.Connection");


conn.Open("Provider=SQLOLEDB.1; Data Source=localhost; User ID=sa; "


+"Password=; Initial Catalog=pubs");


var rs = new ActiveXObject("ADODB.Recordset");


var sql="select * from authors";


rs.open(sql, conn);


shtml = "<table width='100%' border=1>";


shtml +="<tr bgcolor='#f4f4f4'><td>au_id</td><td>au_lname</td><td>au_fname</td><td>phone</td><td>address</td><td> city</td><td>state</td><td>zip</td></tr>";


while(!rs.EOF)


  { 

shtml += "<tr><td>" + rs("au_id") + "</td><td>" + rs("au_lname") + "</td><td>" + rs("au_fname") + "</td><td>" + rs("phone") + "</td><td>" + rs("address") + "</td><td>" + rs("city") + "</td><td>" + rs("state") + "</td><td>" + rs("zip") + "</td></tr>";


rs.moveNext;


  } 

shtml += "</table>";


document.write(shtml);


rs.close();


rs = null;


conn.close();


conn = null;


</script>


通过XML数据岛实现前端数据绑定与导航

// 利用XML数据岛实现前端数据绑定与导航




<html>


<body>


srno:<input type=text datasrc=#xmldate DataFLD=srno size="76"><BR>


times:<input type=text datasrc=#xmldate DataFLD=times size="76"><BR>


<input id="first" TYPE=button value="<< 第一条记录" onclick="xmldate.recordset.moveFirst()">


<input id="prev" TYPE=button value="<上一条记录" onclick="xmldate.recordset.movePrevious()">


<input id="next" TYPE=button value="下一条记录>" onclick="xmldate.recordset.moveNext()">


<input id="last" TYPE=button value="最后一条记录>>" onclick="xmldate.recordset.moveLast()">


<input id="Add" TYPE=button value="添加新记录" onclick="xmldate.recordset.addNew()">



<XML ID="xmldate">


<infolist>


<info ><srno>20041025-01</srno><times>null</times></info>


<info ><srno>20041101-09</srno><times>2004年10月1日2点22分0秒</times></info>


</infolist>


</XML>


</body>


</html>


解析URL参数与模拟可编辑下拉列表

// 获取URL中的查询参数



<body>


<a href="javascript:location.href=location.href + '?a=1&b=2'">search</a>


<script language="JavaScript">


<!-- 

var a = location.search.substr(1);


if(a.length>0)


{ 

var re = /([^&]*?)=([^&]*)/g


var s = a.match(re);


for(var i= 0;i<s.length;i++)


 { 

alert(s[i]);


alert(s[i].split("=")[1]);


 } 
} 
//--> 

</script>


</body>


// 实现可编辑的SELECT下拉列表效果



<input type=text name=re_name style="width:100px;height:21px;font-size:10pt;"><span style="width:18px;border:0px solid red;"><select name="r00" style="margin-left:-100px;width:118px; background-color:#FFEEEE;" onChange="document.all.re_name.value=this.value;">


<option value="1">11111111<option>


<option value="2">222222</option>


<option value="3">333333</option>


</select>


</span>

作者最新文章