可以用XMLHTTP来传值.对JSP不熟悉.
后台是用ASP实现.
不过,思想是想通的.
只要demo.asp返回的格式为数组,即
xxxx,yyyyyy,zzzzzzz
格式的字符串就行了.demo.htm<script language="vbscript">
Function bytes2BSTR(vIn)
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
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
</script>
<script language="JavaScript">
function getData()
{
//通过XMLHTTP发出请求返回数据.
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
oBao.open("POST","demo.asp?txt="+document.all.txt.value,false);
oBao.send();
sdata = bytes2BSTR(oBao.ResponseBody);
//alert(sdata)
Javascript:buildSel(sdata,document.all.sel2);
}
function buildSel(str,sel)
{
//接收到数据,构建Select
var arrstr = new Array();
arrstr = str.split(",");
for(var i=0;i<arrstr.length;i++)
{
sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
}
}
</script>
<select name="sel2"></select>
<input type="text" name="txt">
<input type="button" onclick="getData()" value="GetData">
demo.asp<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connstr);
return conn;
}
var conn = OpenDB("data.mdb");
var arrstr = new Array();
var rs = Server.CreateObject("ADODB.Recordset");
var sql = "select * from web where webname='"+Request("txt")+"'";
rs.open(sql,conn,1,1)
while(!rs.EOF)
{
arrstr[arrstr.length] = rs("weburl").Value;
rs.MoveNext();
}
//后台最后输出只要是xxx,zzzz,yyyy格式的字符串就行了.
Response.Write(arrstr.toString());
%>
数据库:data.mdb
表web
字段id,webname,weburl
后台是用ASP实现.
不过,思想是想通的.
只要demo.asp返回的格式为数组,即
xxxx,yyyyyy,zzzzzzz
格式的字符串就行了.demo.htm<script language="vbscript">
Function bytes2BSTR(vIn)
Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
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
</script>
<script language="JavaScript">
function getData()
{
//通过XMLHTTP发出请求返回数据.
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
oBao.open("POST","demo.asp?txt="+document.all.txt.value,false);
oBao.send();
sdata = bytes2BSTR(oBao.ResponseBody);
//alert(sdata)
Javascript:buildSel(sdata,document.all.sel2);
}
function buildSel(str,sel)
{
//接收到数据,构建Select
var arrstr = new Array();
arrstr = str.split(",");
for(var i=0;i<arrstr.length;i++)
{
sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
}
}
</script>
<select name="sel2"></select>
<input type="text" name="txt">
<input type="button" onclick="getData()" value="GetData">
demo.asp<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);
var conn = Server.CreateObject("ADODB.Connection");
conn.Open(connstr);
return conn;
}
var conn = OpenDB("data.mdb");
var arrstr = new Array();
var rs = Server.CreateObject("ADODB.Recordset");
var sql = "select * from web where webname='"+Request("txt")+"'";
rs.open(sql,conn,1,1)
while(!rs.EOF)
{
arrstr[arrstr.length] = rs("weburl").Value;
rs.MoveNext();
}
//后台最后输出只要是xxx,zzzz,yyyy格式的字符串就行了.
Response.Write(arrstr.toString());
%>
数据库:data.mdb
表web
字段id,webname,weburl
如果这样的话
通过hidden变量,然后在script里面通过循环应该可以放到下拉框里吧?
那用服务器段脚本应该不难啊
<select>
<%for(int i=0;i<arr.length;i++){%>
<option><%=arr[i]%></option>
<%}%>
</select>或者清楚点:
<%
out.println("<select>")
for(int i=0;i<arr.length;i++){
out.println("<option>" + arr[i] + "</option>");
}
out.println("</select>");
%>我不太懂你的意思,你是要这样的东西吗?
多谢了。