【问题标题】:Interaction between JSP and External javascript filesJSP 和外部 javascript 文件之间的交互
【发布时间】:2013-06-19 19:06:54
【问题描述】:

我是外部 javascript 文件 (*.js) 的新手。基本上我已经准备好我的 JSP,但我的经理希望我在其中添加图形。

所以我找到了一些 *.js 文件。但我不知道如何在它们和我的 JSP 页面之间进行通信。

我想将数据从 jsp 传递到外部 .js 文件。 有什么机制可以做到吗?

例如:-

Demo.jsp

out.print(request.getAttribute("Name"));

现在我想使用/传递/设置上述值到 ma​​in.js 文件怎么做?

【问题讨论】:

    标签: java javascript jsp web-applications web


    【解决方案1】:
    <script type="text/javascript">
        var myJavascriptVariable = <%= request.getParameter("Name")%>;
                                         //or .getAttribute("Name")
    </script>
    

    这可以解决问题,它将创建一个可以在 main.js 中访问的全局变量。当你有 GET 参数时,你也可以只使用 JS:

    var paramarr = window.location.search.substr(1).split("&");
    var params = {};
    
    for (var i = 0; i < paramarr.length; i++) {
        var tmparr = paramarr[i].split("=");
        params[tmparr[0]] = tmparr[1];
    }
    

    或者更短一点:

    var params = {};
    // parse URL's GET parameters and iterate over them
    window.location.search.substr(1).split("&"),forEach(function(el) {
        var kv = el.split('"'); // split into [ key, value ] array
        params[kv[0]] = kv[1];
    });
    

    现在您可以通过以下方式访问JS中的参数:

    params['name']
    

    我个人会使用 AJAX(例如在 JQuery 的帮助下)为我的 JavaScript 文件获取数据,您可以查看 http://api.jquery.com/category/ajax/shorthand-methods/(2018 年编辑:kust 使用本机 ajax 调用或本周大肆宣传的任何 JS 框架) ;-) )

    【讨论】:

      【解决方案2】:

      如果您使用的是 .js 文件,则不能在其中编写 jsp sriptlet。 如果您需要在 .js 文件中调用值,有一种简单的方法。
      为 .jsp 页面中的输入元素分配值。(如果您不使用值在 .jsp 页面中为隐藏的输入元素赋值)
      然后在您的 .jsp 页面中包含 .js 文件
      以 javasript 或 jquery 方法获取值。

      例如:-

      value= document.getElementById("element_id").value
      

      OR 如果您使用的是 jquery,您可以得到

      value = $("#element_id").val();
      

      【讨论】:

        【解决方案3】:

        你可以声明一个全局的js变量并赋值。

          <% String myValue =  (String)request.getAttribute("Name"); %> 
        
        
        
            var global1 ='<%= myValue  %>';
        

        【讨论】:

        • 你能说得更具体点吗?我的意思是..你上面提到的那行我应该在.jsp文件中添加它然后我可以在任何.js文件中使用“global1”吗?
        • 是的,变量应该是全局的,那些js文件应该添加到jsp文件中。
        • 我试过了。但无论何时使用“var global1 ='';”我的页面变为空白。但是当我执行“var global1 =1”时,它会起作用。为什么会这样?
        猜你喜欢
        • 2011-05-16
        • 2015-03-31
        • 1970-01-01
        • 2016-06-29
        • 1970-01-01
        • 1970-01-01
        • 2014-12-28
        • 2017-04-01
        相关资源
        最近更新 更多