1、问题的提出
做一个无刷新联动的<Select>
2、定义VBScript的一个类
'--------------------------------------- ' JSONClass类 ' 将Select语句的执行结果转换成JSON '------------------------------------------ Class JSONClass ' 定义类属性,默认为Private Dim SqlString ' 用于设置Select Dim JSON ' 返回的JSON对象的名称 Dim DBConnection ' 连接到数据库的Connection对象 ' 可以外部调用的公共方法 Public Function GetJSON () dim Rs dim returnStr dim i dim oneRecord ' 获取数据 Set Rs= Server.CreateObject("ADODB.Recordset") Rs.open SqlString,DBConnection,1,1 ' 生成JSON字符串 if Rs.eof=false and Rs.Bof=false then returnStr="{ "& JSON & ":{ records:[" while Rs.eof=false ' ------- oneRecord= "{" for i=0 to Rs.Fields.Count -1 oneRecord=oneRecord & chr(34) &Rs.Fields(i).Name&chr(34)&":" oneRecord=oneRecord & chr(34) &Rs.Fields(i).Value&chr(34) &"," Next '去除记录最后一个字段后的"," oneRecord=left(oneRecord,InStrRev(oneRecord,",")-1) oneRecord=oneRecord & "}," '------------ returnStr=returnStr & oneRecord Rs.MoveNext Wend ' 去除所有记录数组后的"," returnStr=left(returnStr,InStrRev(returnStr,",")-1) returnStr=returnStr & "]}}" end if Rs.close set Rs=Nothing GetJSON=returnStr End Function '私用方法,在类中使用 Private Function check() End Function ' End Class
3、调用该类
<%
dim a
set a=new JSONClass
a.Sqlstring="Select * From magazine"
a.dbconnection=conn
a.json="magazineTab"
'response.Write(a.GetJSon())
%>
4、将JSON传递给JavaScript,转变成JavaScript对象。
<script language="JavaScript" type="text/JavaScript">
var i;
var obj=<%=a.GetJSon()%>;
// var obj=eval( "("+<%=a.GetJson()%>+")" );
var oSelect=document.getElementById("magazine");
for(i=0;i<obj.magazineTab.records.length;i++){
var oOption = document.createElement("OPTION");
oSelect.options.add(oOption);
oOption.innerText =obj.magazineTab.records[i].magazine ;
oOption.value = obj.magazineTab.records[i].magazineID;
};
</script>