通过javaScript将值传递给JSP

时间:2010-10-26 07:19:36

标签: javascript jsp

boolean canModify   = UTIL.hasSecurity("PFTMODFY") && something;

function name() {   
      I need to pass a value false to something when the page loads.   
}
window.onLoad = name

如何在页面加载中将值从JavaScript传递给JSP

1 个答案:

答案 0 :(得分:3)

认为你的意思是反过来,让服务器端代码输出JavaScript在页面加载时可以看到的值。

< S>

从服务器代码(JSP)发送到客户端代码(JavaScript)

只需像输入其他任何内容一样输出,例如:

<%
    boolean canModify   = UTIL.hasSecurity("PFTMODFY") && something;
%>
var canModify = <%=canModify%>;
//  ^              ^
//  |              +-- server-side variable
//  +-- client-side variable

当JSP实际运行时,返回给客户端的脚本代码将只是

var canModify = false;

var canModify = true;

这是一个布尔值;如果你需要输出一个字符串,你需要在它周围加上引号,并注意你在其中转义应该在JavaScript文字字符串中转义的任何内容(例如反斜杠,以及你正在使用的任何引号字符) )。

从客户端代码(JavaScript)发送到服务器代码(JSP)

但是如果你真的意味着你想在页面加载时将值发送回服务器(这看起来很奇怪,但是嘿),你必须使用Ajax 。如果你要做Ajax的话,我建议使用像jQueryClosurePrototypeYUIany of several others这样的库。他们可以为您大大简化流程。例如,使用jQuery,此客户端代码将值发送回服务器:

jQuery.get("/your/page/url", {"name": "value"});

(或jQuery.post用于进行更改的内容)。使用Prototype,它将是:

new Ajax.Request("/your/page/url", {
    method:     "GET", // or, of couse, "POST"
    parameters: {"name": "value"}
});

我上面提到的所有lib都有类似的易于使用的机制,用于向服务器发送数据。请注意,此机制受Same Origin Policy

的约束

你没有 需要 这个库,当然 - 图书馆可以做的任何事情,你可以自己做。我上面列出的功能都是XMLHttpRequest对象(WikipediaMSDNMDC)的包装器。有关示例,请参阅链接的资源。

非Ajax黑客

我不应该说 需要 为此使用Ajax,更像是想要。 :-)如果由于某种原因,你真的不想使用Ajax,你可以通过用触发从服务器检索的JavaScript向页面添加内容,然后将你的值作为标记包含在该请求中来实现。例如:

var link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.src = "/path/to/jsp?name=" + encodeURIComponent(value);
document.getElementsByTagName('head')[0].appendChild(link);

您的JSP将执行查询字符串所需的任何操作,然后返回样式表中有效的任何内容(例如/* */)。或者,如果您不想使用样式表链接,请使用img标记并返回透明像素;等

我不会那样做。我会使用Ajax。