想要一个关于如何访问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]%>';
}
}
}
答案 0 :(得分:4)
您的Java代码在服务器上运行 。您的JavaScript代码在客户端上运行 。因此,您不能在服务器上使用k
,它在页面完成,发送到浏览器以及其中执行的JavaScript之前不存在。
从您的代码中看起来您只需要访问存储在服务器端toppings
数组中的字符串。你有两个选择:
将整个toppings
数组作为JavaScript数组输出到页面的脚本中。然后你可以在客户端使用它。
让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变量。想一想。