Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
649 views
in Technique[技术] by (71.8m points)

passing value to JSP via javaScript

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

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

How can i pass a value from JavaScript to JSP on the page load

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I think you mean it the other way around, have server-side code output a value that JavaScript can see at page-load time.

Sending from your server code (JSP) to your client code (JavaScript)

Just output it like you would anything else, e.g.:

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

When the JSP actually runs, the script code returned to the client will simply be

var canModify = false;

or

var canModify = true;

That's a boolean; if you need to output a string, you need to put the quotes around it and be careful that you escape anything within it that should be escaped inside a JavaScript literal string (like a backslash, for instance, and whatever quote character you're using).

Sending from your client code (JavaScript) to your server code (JSP)

But if you really mean you want to send a value back to the server on page load (which seems odd, but hey), you'd have to use Ajax for that. If you're going to be doing Ajax stuff, I'd recommend using a library like jQuery, Closure, Prototype, YUI, or any of several others as they can dramatically simplify the process for you. For instance, using jQuery, this client-side code sends a value back to the server:

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

(or jQuery.post for things that make changes). Using Prototype, it'd be:

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

All of the libs I mentioned above have similarly easy-to-use mechanisms for sending data to the server. Note that this mechanism is bound by the Same Origin Policy.

You don't need a library for this, of course — anything a library can do, you can do yourself. The features I've listed above are all wrappers for the XMLHttpRequest object (Wikipedia, MSDN, MDC). See the linked resources for examples.

Non-Ajax hack

I shouldn't have said you need to use Ajax for this, more like you want to. :-) If, for some reason, you really didn't want to use Ajax you could do it by adding something to the page with JavaScript that triggers a retrieval from the server, and then include your value as a flag in that request. For instance:

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

Your JSP would do whatever it needs to do with the query string, and then return anything that's valid in a stylesheet (/* */, for instance). Or if you don't want to use a style sheet link, use an img tag and return a transparent pixel; etc.

But I wouldn't do that. I'd use Ajax.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.9k users

...