JavaScript变量的作用域?
如何从JSP页面中访问JavaScript变量?不可能。您可以在javascript中访问JSP变量,但无法在JSP中访问javascript变量。不可能。您可以在javascript中访问JSP变量,但无法在JSP中访问javascript变量。我猜您可能在客户端(浏览器)上运行javascript,在服务器的JSP页面上运行Java。无法访问服务器上的客户端变量。您可以将客户端变量的值从客户端发送到服务器进行服务器端处理。您可能会通过电子邮件或仅通过提交表单来实现这一点 Edit例如,此Javascript代码使用字段名“foofield”(要清楚,名称略有不同)将JavaScript变量的作用域?,javascript,jsp,Javascript,Jsp,如何从JSP页面中访问JavaScript变量?不可能。您可以在javascript中访问JSP变量,但无法在JSP中访问javascript变量。不可能。您可以在javascript中访问JSP变量,但无法在JSP中访问javascript变量。我猜您可能在客户端(浏览器)上运行javascript,在服务器的JSP页面上运行Java。无法访问服务器上的客户端变量。您可以将客户端变量的值从客户端发送到服务器进行服务器端处理。您可能会通过电子邮件或仅通过提交表单来实现这一点 Edit例如,此Ja
foo
变量的值发送到服务器端页面“test.jsp”。这使用了,但是,并且可以做很多相同的事情,只是语法略有不同:
服务器端Java(在JSP中)-这就像从已提交的表单中获取字段一样:
String foo;
foo = request.getParameter("foofield");
客户端Javascript(使用原型):
如果您希望客户端使用jQuery,下面是为jQuery函数重写的原型代码:
// Our client-side `foo` variable
var foo = "Hi there";
// Send it to the server via Ajax (jQuery version)
$.ajax({
url: 'test.jsp',
data: {foofield: foo},
success: handleSuccess, // Function to call on success; not shown
error: handleFailure // Function to call on failure; not shown
});
我的猜测是,您可能正在客户端(在浏览器中)上运行Javascript,在服务器上的JSP页面中运行Java。无法访问服务器上的客户端变量。您可以将客户端变量的值从客户端发送到服务器进行服务器端处理。您可能会通过电子邮件或仅通过提交表单来实现这一点 Edit例如,此Javascript代码使用字段名“foofield”(要清楚,名称略有不同)将
foo
变量的值发送到服务器端页面“test.jsp”。这使用了,但是,并且可以做很多相同的事情,只是语法略有不同:
服务器端Java(在JSP中)-这就像从已提交的表单中获取字段一样:
String foo;
foo = request.getParameter("foofield");
客户端Javascript(使用原型):
如果您希望客户端使用jQuery,下面是为jQuery函数重写的原型代码:
// Our client-side `foo` variable
var foo = "Hi there";
// Send it to the server via Ajax (jQuery version)
$.ajax({
url: 'test.jsp',
data: {foofield: foo},
success: handleSuccess, // Function to call on success; not shown
error: handleFailure // Function to call on failure; not shown
});
您不能直接访问它。这是因为页面是这样呈现的:
1. On the server, the JSP code runs and generates HTML/JavaScript.
2. The HTML/JavaScript is sent to the client's browser.
3. The browser then renders the HTML and runs the JavaScript.
如您所见,JavaScript是在JSP运行之后运行的,因此它们不能直接访问彼此的变量
您可以做的是输出JavaScript代码,该代码根据JSP代码中的值初始化变量。例如,如果生成这样的代码(请原谅我的语法,我不懂JSP):
您不能直接访问它。这是因为页面是这样呈现的:
1. On the server, the JSP code runs and generates HTML/JavaScript.
2. The HTML/JavaScript is sent to the client's browser.
3. The browser then renders the HTML and runs the JavaScript.
如您所见,JavaScript是在JSP运行之后运行的,因此它们不能直接访问彼此的变量
您可以做的是输出JavaScript代码,该代码根据JSP代码中的值初始化变量。例如,如果生成这样的代码(请原谅我的语法,我不懂JSP):
由于javascript在客户端运行,而JSp在服务器端运行,因此无法访问JSp代码中的javascript变量,但您可以通过将该变量与请求一起作为请求参数传递,在服务器端访问该javascript变量,由于请求参数存在于jsp代码可用的请求对象中,因此您可以访问它们。由于javascript在客户端运行,而jsp在服务器端运行,因此无法访问jsp代码中的javascript变量,但是您可以通过将该变量与请求一起作为请求参数传递来访问服务器端的javascript变量,因为请求参数存在于jsp代码可用的请求对象中,所以您可以访问它们。您不能“在[客户端]javascript中访问jsp变量”。您可以通过在服务器生成的
script
块中的Javascript代码中输出变量的值来将变量的值发送给客户端,这不是一回事。您能否解释一下是否可以反过来执行此操作?您不能“在[客户端]Javascript中访问JSP变量”。通过在服务器生成的script
块中的Javascript代码中输出变量值,可以将变量的值发送给客户端,这不是一回事。你能解释一下是否可以反过来做吗?你能提供一个例子,说明我如何在服务器端访问客户端变量的值吗?@Rachel:你需要JavaScript向服务器发出请求(AJAX)或者用值填充表单并提交。@Rachel:我添加了一些examples@T.J.Crowder:谢谢你的例子,现在我能更清楚地理解这个概念了。@Rachel:太好了!很高兴这有帮助。您能提供一个示例,说明如何在服务器端访问和客户端变量的值吗?@Rachel:您需要JavaScript向服务器发出请求(AJAX),或者用这些值填充表单并提交。@Rachel:我添加了一些examples@T.J.Crowder:谢谢你举个例子,现在我能更清楚地理解这个概念了。@Rachel:太好了!很高兴这有帮助。您关于创建全局JavaScript变量的建议确实回答了这个问题,但这不是推荐的最佳实践。从JSP动态创建任意全局变量往往会导致不主要为JavaScript编写的开发人员对功能产生错误的认识,这容易导致命名空间冲突和意外的代码失败。您建议创建全局JavaScript变量确实回答了这个问题,但这不是推荐的最佳做法。从JSP动态创建任意全局变量往往会导致不主要为JavaScript编写的开发人员产生错误的功能感,从而容易发生名称空间冲突和意外的代码失败。