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>