不明白 .. 你的js是ASP中的服务器端脚本呀,Asp中用的是ADODB,又不是jdbc,有什么好转的
解决方案 »
- JSP 页面中一个form中怎么实现根据“select”的值改变”input“的默认字?
- 关于ssh整合过程中hibernate每隔总是出现could not execute query,求解决
- css??
- <html:text>在做资料修改时,这么给value赋值。
- ★★请问初学java .web要注意什么〓
- JSP做BBS的注册页面的一段代码。
- 就四十分了,全给了,SQL问题!请指教!!!
- 关于文件下载问题
- 新年快乐!解决问题立即给分,从没有食言过!
- 请问这是什么错误?帮帮忙!
- 现在企业 主要采用的是哪些J2EE的服务器呢?相应的比例大概是多少呢?那位大哥谈谈呢
- 我的参数都显示在了地址栏。怎样屏蔽?我希望不管打开什么页面,在地址栏都显示index.jsp,谢谢
这是继 "利用XMLHTTP无刷新获取数据" 的另一篇关于XMLHTTP的应用.
关于XMLHTTP.可以说,是一个很好的接合剂.把客户端和服务端的距离拉近了.
利用XMLHTTP.我们可以实现很多好的想法.这文章.实现了二级连动Select.
传统二级连动是把所有的数据都传到有客户端..
利用XMLHTTP.我们可以实时地返回我们所需要的数据.
select.htm<script language="JavaScript">
function GetResult(str)
{
/*
*--------------- GetResult(str) -----------------
* GetResult(str)
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult(document.all.userid.value);
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult(str) -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
oBao.open("POST","Server.asp?sel="+str,false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
//通过XMLHTTP返回数据,开始构建Select.
BuildSel(unescape(oBao.responseText),document.all.sel2)
}function BuildSel(str,sel)
{
/*
*--------------- BuildSel(str,sel) -----------------
* BuildSel(str,sel)
* 功能:通过str构建Select.
* 参数:str,字符串,由服务端返回的.有特定结构"字符串1,字符串2,字符串3"
* 参数:sel,要构建的Select
* 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- BuildSel(str,sel) -----------------
*/
//先清空原来的数据.
sel.options.length=0;
var arrstr = new Array();
arrstr = str.split(",");
//开始构建新的Select.
for(var i=0;i<arrstr.length;i++)
{
sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
}
}
</script>
<select name="sel" onChange="GetResult(this.value)">
<option value="">请选择
<option value="福建省">福建省
<option value="湖北省">湖北省
<option value="辽宁省">辽宁省
</select>
<select name="sel2"></select>server.asp 服务器端处理.<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- 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 oConn = OpenDB("data.mdb");
var province = Request("sel");
var arrResult = new Array();
var sql = "select city from china where province='"+province+"'";
var rs = Server.CreateObject("ADODB.Recordset");
rs.Open(sql,oConn,1,1);
while(!rs.EOF)
{
//遍历所有适合的数据放入arrResult数组中.
arrResult[arrResult.length] = rs("city").Value;
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由","字符串连接.
Response.Write(escape(arrResult.join(",")));
%>
数据库设计
data.mdb
表china.
字段
id 自动编号
province 文本
city 文本表:china 数据:
id province city
1 福建省 福州市
2 福建省 厦门市
3 福建省 泉州市
4 湖北省 武汉市
5 湖北省 荆州市
6 湖北省 宜昌市
7 辽宁省 沈阳市
8 辽宁省 大连市
9 辽宁省 盘锦市
ConnDB.ConnectionString="DSN=fanli;uidsa;pwd=11111"; ConnDB.open var sql = "select * from TB_user where user_id='1001'" ; //你的SQL语句rs.open(sql,ConnDB,1);if (rs.RecordCount>0){ if (v==parseInt(rs("user_id"))){ //结果回显document.alert(rs("loginname")); //显示某一字段的值var sql=null;rs.closeConnDB.closereturn; }} else { var sql=null; alert("没查到记录!"); txt.select(); txt.focus(); rs.closeConnDB.close}
</script>
ConnDB.ConnectionString="DSN=fanli;uid=sa;pwd=11111"; //你得数据库参数,刚才写错了ConnDB.open var sql = "select * from TB_user where user_id='1001'" ; //你的SQL语句rs.open(sql,ConnDB,1);if (rs.RecordCount>0){ if (v==parseInt(rs("user_id"))){ //结果回显document.alert(rs("loginname")); //显示某一字段的值var sql=null;rs.closeConnDB.closereturn; }} else { var sql=null; alert("没查到记录!"); txt.select(); txt.focus(); rs.closeConnDB.close}
</script>
<%
function OpenDB(sdbname)
........很显然是一个ASP的服务器端代码,你只要把此文件用server.jsp重新写一遍就可以了,也就是从数据库里读数据,然后按一定的格式写回客户端。
例如:
<%
java.sql.Connection Conn;
java.sql.Statement Stmt;
java.sql.ResultSet Rst;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Conn=DriverManager.getConnection("jdbc:odbc:fanli","sa","11111");
Stmt=Conn.createStatement();String sql = "select city from china where province='"+request.getParameter("sel")+"'";
Rst= Stmt.executeQuery(sql);
StringBuffer sbf = new StringBuffer();
while(Rst.next())
{
//遍历所有适合的数据放入arrResult数组中.
sbf.append(rs.getString("city")+",");
}
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由","字符串连接.
out.print(escape(sbf.toString()));%>
刚才试了一下,运行到循环的时候IE死了:(