Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java函数中使用javascript变量_Java_Javascript_Jsp - Fatal编程技术网

在java函数中使用javascript变量

在java函数中使用javascript变量,java,javascript,jsp,Java,Javascript,Jsp,想要一个关于如何在java范围内访问javascript变量的解决方案。 在下面的代码中, k是一个javascript变量,我如何访问它,我收到一条消息,因为JVM不知道k function value_transitAccountCounter(i){ alert('welcome -->'+i); for(var k=0;k<5;k++){ if(i==k){ return '<%=toppings[k]%>'

想要一个关于如何在java范围内访问javascript变量的解决方案。 在下面的代码中, k是一个javascript变量,我如何访问它,我收到一条消息,因为JVM不知道k

function value_transitAccountCounter(i){
    alert('welcome -->'+i);
    for(var k=0;k<5;k++){
        if(i==k){
            return '<%=toppings[k]%>';
        }
    }
}
函数值\u transitaccountcountcounter(i){
警报(“欢迎-->”+i);
对于(var k=0;k您的Java代码正在服务器上运行。您的JavaScript代码正在客户端上运行。因此,您不能在服务器上使用
k
,直到页面完成、发送到浏览器并执行其中的JavaScript,它才存在

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

  • 将整个
    toppings
    数组作为JavaScript数组输出到页面脚本中,然后您就可以在客户端使用它了

  • 让您的
    value\u transitAccountCounter
    函数对服务器端代码进行修改,询问
    toppings[i]
    的值是多少。您需要更改
    value\u transitAccountCounter
    以接受用于返回值而不是实际返回值的回调,因为ajax调用是异步的(
    value\u transitaccountcountcounter
    将在ajax调用完成之前返回,因此,在您有返回的值之前)。(可以进行同步ajax调用,但这是一个非常非常糟糕的主意,你最好假装这是不可能的。在调用执行时,它会完全锁定大多数浏览器的UI,这让用户非常恼火。)

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

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

  • 将整个
    toppings
    数组作为JavaScript数组输出到页面脚本中,然后您就可以在客户端使用它了

  • 让您的
    value\u transitAccountCounter
    函数对服务器端代码进行修改,询问
    toppings[i]
    的值是多少。您需要更改
    value\u transitAccountCounter
    以接受用于返回值而不是实际返回值的回调,因为ajax调用是异步的(
    value\u transitaccountcountcounter
    将在ajax调用完成之前返回,因此,在您有返回的值之前)。(可以进行同步ajax调用,但这是一个非常非常糟糕的主意,你最好假装这是不可能的。在调用执行时,它会完全锁定大多数浏览器的UI,这让用户非常恼火。)


  • 您无法从JSP访问JavaScript变量。JavaScript在客户端运行。JSP在服务器端运行。您可以这样编写:

    function value_transitAccountCounter(i) {
        alert('welcome -->'+i);
        <% for (int k = 0; k < 5; k++) { %>
            if (i == <%= k %>) {
                return '<%= toppings[k] %>';
            }
        <% } %>
        }
    }
    
    函数值\u transitaccountcountcounter(i){
    警报(“欢迎-->”+i);
    如果(i==){
    返回“”;
    }
    }
    }
    
    您无法从JSP访问JavaScript变量。JavaScript在客户端运行。JSP在服务器端运行。您可以编写如下内容:

    function value_transitAccountCounter(i) {
        alert('welcome -->'+i);
        <% for (int k = 0; k < 5; k++) { %>
            if (i == <%= k %>) {
                return '<%= toppings[k] %>';
            }
        <% } %>
        }
    }
    
    函数值\u transitaccountcountcounter(i){
    警报(“欢迎-->”+i);
    如果(i==){
    返回“”;
    }
    }
    }
    
    JSP在服务器上运行。它输出一些内容。这些内容被发送到浏览器。然后浏览器执行代码

    您不能在客户端和服务器端代码之间直接通信

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

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

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

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

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

    您不能在客户端和服务器端代码之间直接通信

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

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

    • 设置
      location.href
    • 提交表格
    • 使用
      XMLHttpRequest
    请求需要包括您想要传递的数据。

    Crowder是正确的: 您不能为了查看java变量而集成javascript,但您可以做相反的事情,一般来说,为了让javascript代码读取java变量,总有一种方法可以逆转您的问题。请考虑一下。

    祝你好运,克劳德是对的: 您不能为了查看java变量而集成javascript,但您可以做相反的事情,一般来说,为了让javascript代码读取java变量,总有一种方法可以逆转您的问题。请考虑一下。


    祝你好运

    @Crowder,如果我使用你的第一个解决方案,你认为服务器端会有任何进一步的复杂情况吗manipulation@harigm:每当服务器上的阵列发生更改时,您都需要向客户端发送新副本(例如,页面刷新或类似操作)。对阵列客户端所做的任何更改都自然需要发送到服务器(通过ajax或表单post等)。@C