How to Execute a JavaScript Function from the Java Part of Jsp

Is it possible to execute a javascript function from the java part of jsp?

I assume this is roughly what you're looking for. If a server side variable (intValue) is equal to 1, then call the function, otherwise do not.

<% if (intValue == 1) { %>
<script type="text/javascript">
forSignup();
</script>
<% } %>

Bear in mind though, that you're not actually calling this Javascript function "from Java". You are merely ensuring that the Javascript function is called based on the server side condition, dependent on the integer value in question.

running javascript function inside jsp

Below correction in your code will work fine for you

<script>
function test(){
alert("Hello"); // added sample text
}
</script>


<%
ArrayList<Marker> list = new ArrayList<Marker>();

list = (ArrayList<Marker>)request.getAttribute("markers");

for(int i = 0; i < list.size(); i++){
%>
<script>
test(); //No need to put java script code inside scriptlet
</script>
<%
}
%>

how a jsp function execute when javascript's function call?

Jsp plays on server side and javascript plays on client side.

Java needs compiled code and Javascript is just a scripting language interpreted by the browser.

You need to either make a request to server(HTML forms/AJAX) for new content or Maintain Json object in client side itself while page loading and use it later.

But You cannot mix them.

Calling Javascript function from Servlet

response.getWriter().println("<script type='text/javascript'>jAlert('Hello');</script>");

This above code will never be rendered on the browser since you are forwarding you request to a JSP page, either using RequestDispatcher or using sendRedirect method. In both option, response will only be generated for what you have written on your JSP.

How to call a JS function inside a JSP?

Yes. You have 2 options:

1) Call desired Java functionality using AJAX (mostly used when user do some action):

$.ajax('/url/to/your/servlet', {data: 1, another-data: 2}, function() {
// success callback
});

2) Call desired JavaScript function when page is parsed or when it is loaded (prepare the call in JSP page). It is not direct call of JavaScript function from JSP, you just prepare the call and call is performed when page is parsed/loaded on the client side:

<script>
// Alert is show when page is parsed
alert(${data});
$(document).ready(function() {
// Alert is show when page is loaded (except of images and few other resources)
alert(${data});
});
</script>

How to make a JSP function to run only when called?

The events in the webpage (onclick event for example) is executed client side when someone opens your webpage and clicks the button. The JSP scriplets are executed when the webpage is opened and their result is the actual page that the client receives. So your method executes ONLY when the page is loaded (and the JSP is compiled). The java code is not even visible in the webpage you generate. If you open it in browser and check the source you will see what I mean.

javascript functions calls in order, made by JSP

Have an array in js of all the urls first.

var arr;
int i = 0;
function setURL(url, conf)
{
arr[i] = url;
i++;
}

Then process them at the end one by one by reading the array.
Once one request finished, execute the other one.

OR

There are alternatives rather to use load(), you can opt for $.ajax() directly if you need additional control over what .load() offers like async="false".

Also others like:

  • $.get()
  • $.getJSON()
  • $.getScript()
  • $.post()


Related Topics



Leave a reply



Submit