其实我要解决的问题是,在一个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代码来获得当前页面数据,并放入公式计算返回是不大现实.  不知道那位有什么好方法

解决方案 »

  1.   

    xmlhttp就可以做到啊
    页面不刷新也不用弹出窗口,在后台和服务器端交换数据,搜索一下,很多资料的
      

  2.   

    <script language=javascript>     function replace(v){ var sql = "select * from Dictionary where MainID='" + v + "'" ;//新建数据库连接对象和数据集存取对象var ConnDB = new ActiveXObject("adodb.connection"); var rs = new ActiveXObject("ADODB.Recordset"); //这里填入要连接的DSNConnDB.ConnectionString="DSN=***;uid=***;pwd=***"; ConnDB.open rs.open(sql,ConnDB,1,1); if (rs.RecordCount>0){ if (v==parseInt(rs("MainID"))){ //字符串连接document.all('txt').value = v + rs("MainValue"); var sql=null;rs.closeConnDB.closereturn; } else { var sql=null; alert("没有此代号!"); txt.select(); txt.focus(); rs.closeConnDB.close} 
    }</script><input type=text id=txt name=txt onblur="replace(this.value)">
      

  3.   

    <script language="javascript"> 
      //用 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> 
      

  4.   

    用javascript的例子:
          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();
      

  5.   

    是的,还是用Ajax技术比较好吧,不知道哪位有这方面是实例
      

  6.   

    AJAX可以用在這方面的嗎???
      

  7.   

    javascript 可以连接数据库吗?
      

  8.   

    可以通过页面中转一下啊,用JSP(或其他)与数据库存取数据,再通过javascript与页面交涉不就可以读去数据库中的数据了么,不过好像没这个必要
      

  9.   

    顶一下“javascript 可以连接数据库吗?”
      

  10.   

    用vbscript和javascript都可以连接数据库(ACCESS,SQL)
      

  11.   

    什么计算不能用js完成的?很复杂吗?
    可以用xmlhttp来做,也可以用隐藏的iframe来做,都是不刷新的
    尽可能不要用js来连数据库,尽管功能可以实现,但以后的数据库连接不好管理
      

  12.   

    <html>
    <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>