请问JSP里怎样把javascript的变量值赋给java的变量,谢谢

解决方案 »

  1.   

     把js变量中的值赋值给一hidden,然后提交,用request.getParameter()获取就可以了
      

  2.   

    JSP中不可能实现这样的功能,因为JSP的页面是运行在服务器端的,而JS是运行在客户端的,由浏览器编译的,如果要把客户端变量传过去,只能通过GET或者POST的方法传递给后台进行处理
      

  3.   

    可以实现 但是比较麻烦 不是直传。  你在页面定义一个文本框用来接收js中的变量 
      然后你的提交页面 在action中写入你要提交的路径,然后在你的servlet或者action 中得到js中的变量。2,还有个意思是。<Script>
    var testvalue='1';  <%
       String test= testvalue;
      %>lz 想要这种实现 是不能的。
      

  4.   

    用request.getParameter()获取就可以了
      

  5.   

    不能直接赋值,如果你非要在页面上实现这种效果,有个间接的笨方法。
    js变量:js_element;java变量:java_attr.
    function noName(){
       if(js_element=='1') <%java_attr="1"%>
       if(js_element=='2') <%java_attr="2"%>
       if(js_element=='3') <%java_attr="3"%>
       ......
    }
    类似的,一直往下写。
    当js变量值的范围比较小,遍历判断,并给java变量赋以相应的值。
    js变量值范围大时,就不行了。
      

  6.   

    <script>var str="祝福四川";
    document.getElementById("hid")=str;
    document.form1.submit();
    </script>
    <type=hidden id=hid name=hidd>后台直接request.getParameter("hidd")就好了
      

  7.   

    实现原理:将客户端的值传至服务器端赋值给服务器变量,
    要想在客户端完成那是不可能的,上面说的利用隐藏域,ajax,还有页面url参数都是可行的。
      

  8.   

    同页面要把javascript变量转成jsp,是不可能的,ajax也不行
      

  9.   

    js和jsp都能访问到的是什么?
      

  10.   

    这里你已经是说用JSP了
    我现在就假设你已经在服务器上运行的页面
    而你的意思是用Ajax来进行无刷新的数据操作吧
    恩 那你最好使用一些脚本框假来解决 因为这样对于IE的兼容什么的你可以省很多代码
    我这里就用JQuery来给你演示一个吧 都是最简单的 也是我才学习的....多了自己去想吧首先在页面的代码
    UserVerify.html
    <!DOCTYRPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>JQuery实例2:可以编辑的表格</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <link type="text/css" rel="stylesheet" href="css/userVerify.css"/>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/userVerify.js"></script>
    </head>
    <body>
         请输入用户名:<input type="text" id="userName"/><input type="button" value="校验" id="verifyButton"/>
            <div id="result"></div>
        </body>
    </html>然后是JS
    userVerify.js
    /*
    需要通过Javascript代码来做两件事情
    1.button被按下的时候,需要将文本框中的数据获取到,然后发送给服务端,最后接受服务器返回的数据,填充到我们预留的div中,这样用户就可以看到结果
    2.文本框上,用户按键之后,需要判断文本框中的内容是否为空,如果不为空,红色的边框和背景图就应该取消,否则保留
    *//*
    需要在页面装载完成是注册上这些工作
    */$(document).ready(function(){
    //这里面的内容就是页面装载完成后需要执行的代码
    //alert('JQuery 已经加载完毕了!!');

    //需要找到button按钮,注册事件
    $("#verifyButton").click(function(){
    //alert("Button click!");
    //1.获取文本框的内容
    var userName = $("#userName").val();
    //2.将这个内容发送给服务器端
    if(userName == ""){
    alert("用户名不能为空");
    }else{
    $.get("http://localhost:8080/Entironment_Design/usersVerify?userName=" + encodeURI(encodeURI(userName)),null,function(response){
    //3.接受服务器端返回的数据,填充到div中
    $("#result").html(response);
    });
    }
    });
    //需要找到文本框,注册事件
    $("#userName").keyup(function(){
    //alert("key up!");   
    });
    });CSS里我就不多写了 反正是简单的例子最后是在你的工程里的servlet
    UserVerify.java
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */package servlet;import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.URLDecoder;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;/**
     *
     * @author xingxing
     */
    public class UsersVerify extends HttpServlet {
       
        /** 
        * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
        * @param request servlet request
        * @param response servlet response
        */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
                String param = request.getParameter("userName");
                if (param == null || param.length() == 0) {
                    out.println("用户名不能为空");
                } else {
                    String userName = URLDecoder.decode(param, "UTF-8");
                    if (userName.equals("wangxingkui")) {
                        out.println("用户名[" + userName + "]已经存在,请使用别的用户名注册");
                    } else {
                        out.println("可以使用用户名[" + userName + "]注册");
                    }
                }
            } finally { 
                out.close();
            }
        }     // <editor-fold defaultstate="collapsed" desc="HttpServlet">
        /** 
        * Handles the HTTP <code>GET</code> method.
        * @param request servlet request
        * @param response servlet response
        */
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }     /** 
        * Handles the HTTP <code>POST</code> method.
        * @param request servlet request
        * @param response servlet response
        */
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            processRequest(request, response);
        }    /** 
        * Returns a short description of the servlet.
        */
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>}
    JQuery自己去下个吧 还有就是把
    $.get("http://localhost:8080/Entironment_Design/usersVerify?userName=" + encodeURI(encodeURI(userName)),null,function(response){
    里面的http://localhost:8080/Entironment_Design/usersVerify 
    改成你自己的工程就好这里值得注意的就是你的这些代码 必须都运行在服务器上才是可以的
      

  11.   

    用1楼的方法活着在js代码中重写一下action、href然后带上js中的值传到servlet中去。。