在java函数中使用javascript变量

时间:2011-05-09 08:19:35

标签: java javascript jsp

想要一个关于如何访问java范围内的javascript变量的解决方案。 在下面的代码中,<%= toppings [k]%> k是一个javascript变量,我如何访问它,我收到一条消息,因为k

<
function value_transitAccountCounter(i){
    alert('welcome -->'+i);
    for(var k=0;k<5;k++){
        if(i==k){
            return '<%=toppings[k]%>';
        }
    }
}

4 个答案:

答案 0 :(得分:4)

您的Java代码在服务器上运行 。您的JavaScript代码在客户端上运行 。因此,您不能在服务器上使用k,它在页面完成,发送到浏览器以及其中执行的JavaScript之前不存在。

从您的代码中看起来您只需要访问存储在服务器端toppings数组中的字符串。你有两个选择:

  1. 将整个toppings数组作为JavaScript数组输出到页面的脚本中。然后你可以在客户端使用它。

  2. value_transitAccountCounter函数向服务器端代码ajax call生成{{3}},询问toppings[i]的值是多少。您需要更改value_transitAccountCounter以接受用于返回值而不是实际返回值的回调,因为ajax调用将是异步的(value_transitAccountCounter将在ajax调用完成之前返回,因此,在你有值返回之前)。 (这可能可能进行同步ajax调用,但这是一个非常非常糟糕的想法,你最好假装它是不可能的。它完全锁定了大多数浏览器的UI,而调用是执行,令人难以置信地刺激用户。)

答案 1 :(得分:1)

您无法从JSP访问JavaScript变量。 JavaScript在客户端运行。 JSP在服务器端运行。你可以写下这样的东西:

function value_transitAccountCounter(i) {
    alert('welcome -->'+i);
    <% for (int k = 0; k < 5; k++) { %>
        if (i == <%= k %>) {
            return '<%= toppings[k] %>';
        }
    <% } %>
    }
}

答案 2 :(得分:0)

JSP在服务器上运行。它输出一些内容。内容将发送到浏览器。然后浏览器执行代码。

无法直接在客户端和服务器端代码之间进行通信。

由于JSP代码首先运行 ,因此很容易将数据从Java获取到JavaScript(您只需动态生成JavaScript),但是您希望采用其他方式。

为了从客户端JavaScript变量获取数据到服务器端JSP变量,您必须通过以下方式发出新的HTTP请求:

  • 设置location.href
  • 提交表格
  • 使用XMLHttpRequest

请求需要包含您要传递的数据。

答案 3 :(得分:0)

克劳德是对的: 你不能集成你的javascript来查看java变量,但你可以做相反的事情,一般来说,总有一种方法可以反转你的问题,以便让你的javascript代码读取java变量。想一想。

祝你好运