在java函数中使用javascript变量
想要一个关于如何在java范围内访问javascript变量的解决方案。 在下面的代码中, k是一个javascript变量,我如何访问它,我收到一条消息,因为JVM不知道k在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]%>'
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