其实我要解决的问题是,在一个JSP页面表单上,有一些数字文本框,
<input name="budget1" onfocusout="count()">
<input name="budget2" onfocusout="count()">
<input name="budget3" onfocusout="count()">
<input name="budget4" readonly="true" >,这个比如budget4的值是根据budget1,budget2,budget3还有他们之间的公式来计算的,我本来的做法在这些budget1,budget2,budget3里面触发一个事件,打开一个窗口,将本页面上的这些数据穿过去,然后在后台页面接收再根据公式和这些budget1,budget2,budget3的值计算,再返回本页面,当然这个后台页面就是打开一下再算好后自动关闭,当然这样会照成顿一下,所以感觉不太好,所以想在本页面的javascript实现这个计算过程,我们知道javascirpt的值是无法穿给JSP的,只能JSP传给javascirpt,所以在javascirpt放JSP代码来获得当前页面数据,并放入公式计算返回是不大现实. 不知道那位有什么好方法
<input name="budget1" onfocusout="count()">
<input name="budget2" onfocusout="count()">
<input name="budget3" onfocusout="count()">
<input name="budget4" readonly="true" >,这个比如budget4的值是根据budget1,budget2,budget3还有他们之间的公式来计算的,我本来的做法在这些budget1,budget2,budget3里面触发一个事件,打开一个窗口,将本页面上的这些数据穿过去,然后在后台页面接收再根据公式和这些budget1,budget2,budget3的值计算,再返回本页面,当然这个后台页面就是打开一下再算好后自动关闭,当然这样会照成顿一下,所以感觉不太好,所以想在本页面的javascript实现这个计算过程,我们知道javascirpt的值是无法穿给JSP的,只能JSP传给javascirpt,所以在javascirpt放JSP代码来获得当前页面数据,并放入公式计算返回是不大现实. 不知道那位有什么好方法
页面不刷新也不用弹出窗口,在后台和服务器端交换数据,搜索一下,很多资料的
}</script><input type=text id=txt name=txt onblur="replace(this.value)">
//用 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>
var objdbConn = new ActiveXObject ("ADODB.Connection");
var db_path = "c\\intpub\\wwwroot\\db.mdb;//用的一个access数据库
var strdb = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + db_path;
objdbConn.Open(strdb);
var objrs = objdbConn.Execute("select distinct UrlLink,UrlTitle,VisitDate from T_Concept,T_UrlInformation, T_UrlRelation where Concept = '"+key_typed+"' and T_UrlRelation.UrlID=T_UrlInformation.UrlID and T_Concept.UrlID=T_UrlInformation.UrlID order by VisitDate");//此处写你想用的sql语句,结果放在objrs里
if(!objrs.EOF)
{
while(!objrs.EOF)
{
var now = new Date(objrs('VisitDate').value);//引用objrs中某个记录的某个属性值
objrs.moveNext();//移向下一个记录
}
}
objrs.Close();
objdbConn.Close();//关闭数据库用c#的例子:
string connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ 数据库的路径; OleDbConnection conn = new OleDbConnection(connstr);
string clear_Address = "delete from T_Address where ID>=0";//此处写sql语句
conn.Open(); OleDbCommand deleteAddress = new OleDbCommand(clear_Address,conn);
deleteAddress.ExecuteNonQuery();//执行sql语句
conn.Close();
可以用xmlhttp来做,也可以用隐藏的iframe来做,都是不刷新的
尽可能不要用js来连数据库,尽管功能可以实现,但以后的数据库连接不好管理
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>从SQL Server数据库中取出数据</title>
<script>
function getData(){
var db_obj=new ActiveXObject("ADODB.Connection");
db_obj.open('Provider=SQLOLEDB.1;'
+'Password=mypwd;' //数据库密码
+'Persist Security Info=True;'
+'User ID=myuser;' //数据库用户名
+'Initial Catalog=testdb;' //数据库名称
+'Data Source=192.168.0.23' //服务器IP
);
var dataset=new ActiveXObject("ADODB.Recordset");
dataset.open('select NationID, Nation from rs_country',db_obj);
dataset.moveFirst();
var allrecs="";
while(!dataset.EOF){
allrecs+=dataset('NationID')+":"+dataset("Nation");
dataset.moveNext();
}
alert(allrecs)
dataset.close();
db_obj.close();
}
</script>
</head><body>
<input type="button" name="Submit" value="从SQL Server数据库中取出数据" onClick="getData();">
</body>
</html>