一尘不染

在Java函数中使用javascript变量

jsp

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

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

阅读 214

收藏
2020-06-10

共1个答案

一尘不染

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

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

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

  2. 让您的value_transitAccountCounter函数对服务器端代码进行ajax调用,询问toppings[i]is 的值是什么。您需要更改value_transitAccountCounter以接受用于返回值而不是实际返回值的回调,因为ajax调用将是异步的(value_transitAccountCounter将在ajax调用完成之前返回,因此在您具有要返回的值之前)。( 可以 进行同步ajax调用,但这是一个非常非常糟糕的主意,最好不要假装这是不可能的。它会在调用执行时完全锁定大多数浏览器的UI,这对用户来说 非常 令人讨厌。 )

2020-06-10