I submit the form and execute a method in a servlet.
I want to inform the user if the execution worked.

I'm returning false from the method if it did not executed. Else if he was able to do the execution, i want to inform that he did it and close the window.

How can i do it in the js file?

Question is easy in fact.

I have a return value. I want it to be executed in the js file. It is boolean either false or true.

Can anybody help?

Dani AI

Generated

Two practical ways to handle this are: send a page back from the servlet that runs a small script (so the browser executes a callback when the response arrives), or keep the page and call the servlet in the background (AJAX). The latter is cleaner for keeping the user on the same window and for deciding, in JS, whether to alert, clear the form, close the window, or notify an opener window.

As and began to show, you need a predictable response format. A modern, robust pattern is to return JSON (not a bare word) and use the Fetch API on the client. Example client-side flow:

// POST the form, parse JSON, then take UI action
fetch('/YourServletPath', {
  method: 'POST',
  body: new URLSearchParams(new FormData(myForm))
})
  .then(res => { if (!res.ok) throw new Error(res.statusText); return res.json(); })
  .then(data => {
    if (data.success) {
      myForm.reset();                // clear fields on success
    } else {
      alert(data.message || 'Failed');
      // if this is a popup opened by script, you can close it:
      if (window.close) window.close();
    }
  })
  .catch(err => alert('Request failed: ' + err.message));

On the servlet side, return a small JSON object and set the content type. Example idea:

response.setContentType("application/json;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
  out.print("{\"success\":true}");
}

Notes and troubleshooting tips: return JSON to avoid fragile string comparisons; trim server output if using plain text; set response headers (Content-Type, Cache-Control); use HTTP status codes for network errors; remember many browsers will not allow window.close() unless the window was opened by script — use window.opener.postMessage or call a function on opener (same-origin) to ask it to close. If something still fails, inspect the network response in DevTools to confirm the servlet response contains exactly the JSON you expect.

Recommended Answers

All 4 Replies

Does it need to open up a new window, or it should reamain static?

I have a value in servlet.
The user is working with a window. I invoke his method.
I just want to inform him that he could not do it i want to inform him with an alert and close the window. Else i want to clear all the areas in the window. I already have a return value.
I can do the execution of query that he wants i mean. i either return true or false from the method.

Just how to call this javascript function from the servlet

From servlet you send response as true or false. But at client end ie javascript the response will be string 'true' or 'false'. So u need to compare as something like this:

var result = resquest.responseText;

if(result == 'true')  { // Not if(result == true)
    // Success code
} else {
    // Failure code
}

This demo comes with 3 separate files, ().

Here's the code for the process.js:

var delay = 5; // Set the time delay before form submission.
var formID = "testform"; // Specify your form id.

var count = 0;
var submitForm = function() {

   form = (( document.getElementById ) ? document.getElementById( formID ) : document.all[ formID ] );
if ( count >= delay ) {
form.submit(); }
      time = window.setInterval("submitForm()",  1000 );
   count++;
};
 
var verify = function( querystr, div, input ) {
   response = xmlHttp.responseText;
   info = (( response === "valid" ) ? "<p style=\"color : #00F;\">Your name has been verified, form will be submitted in " + delay + " seconds.</p>" : "<p>" + querystr.fontcolor("#00AA00") + " is not a valid name, please repeat the process.</p>" );

   if (( xmlHttp.readyState === 4 ) || ( xmlHttp.readyState === "complete" )) {
      // if ( xmlHttp.status === 200 ) {
        if ( response === "valid" ) { 
        div.innerHTML = info;
        submitForm();
        return true; 
        } else { 
          div.innerHTML = info;
          input.focus();
          input.value= "";
          return false;
           } 
      // }
      }
   };

var sendRequest = function( div, input ) {
   xmlHttp = null;
   method = "GET";
   div = (( document.getElementById ) ? document.getElementById( div ) : document.all[ div ] );

   input = (( document.getElementById ) ? document.getElementById( input ) : document.all[ input ] );
   querystr = input.value;
    if (( !querystr ) || ( querystr === "" )) {
    pStart = "\n<p id=\"para\" style=\"color : #00AA00;\">";
    pEnd = "</p>";
    node = "\n<p id=\"para\" style=\"color : #00AA00;\">Please enter your name!</p>\n"
      try {
      dom = new DOMParser();
      xmlHttp =
      dom. parseFromString( node, "text/xml");
         try {  
         div.innerHTML = xmlHttp.getElementsByTagName("p")[0].outerHTML; 
         } catch( nam ) {
         div.innerHTML = pStart + xmlHttp.getElementsByTagName("p")[ 0 ].childNodes[ 0 ].nodeValue + pEnd;
         } 
      } catch( n ) {
      xmlHttp = new ActiveXObject("Microsoft.XMLDOM");
      xmlHttp.async = "false";
      xmlHttp.loadXML( node );
         try {
         div.insertAdjacentHTML("afterBegin", xmlHttp.documentElement.outerHTML );
         } catch( named ) {
         div.innerHTML = pStart + xmlHttp.documentElement.childNodes[ 0 ].nodeValue + pEnd;
         }
      } return false;
   }
   try {
      if ( window.XMLHttpRequest ) {
      xmlHttp = new XMLHttpRequest();
   } else if ( window.ActiveXObject ) {
         try {
         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch( e1 ) {
         xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
         }
      }
   } catch( e2 ) {
   (( window.createRequest ) ? xmlHttp = window.createRequest() : xmlHttp = null );
   }
   (( xmlHttp.overrideMimeType ) ? xmlHttp.overrideMimeType("text/xml") : xmlHttp );
   if ( xmlHttp !== null ) {
   url = "test.php?names="; // Specify the path to your servlet  
  xmlHttp.onreadystatechange = function() { verify( querystr, div, input ) };      
   xmlHttp.open( method, encodeURI( url + querystr ), true );
   (( xmlHttp.setRequestHeader && method === "POST" ) ?  xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") : xmlHttp ); 
   xmlHttp.send( null );
   } else {
      alert("\nYour browser does not support AJAX Request!"); 
   }
};

code for the test.php:

<?php 
/*><!--?*/
$names = $_GET['names'];
   if(( isset( $names )) && ( $names == "true" )):
   echo "valid";
   else:
   echo "invalid";
   endif;
/*--><?*/
?>

and here's for the mainpage

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html id="html4" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>Live Help!</title>
<script id="script" type="text/javascript" src="process.js"></script>
</head>
<body>
<div>
<form id="testform" name="testform" action="#"  method="post">
<div>
<label for="names">Test Field: <input type="text" id="names" name="names" value="" size="30"></label>
<div id="div"></div>
<input id="sbm" name="sbm" type="button" value="Submit Form" onclick="sendRequest( 'div', 'names' );">
</div>
</form>
</div>
</body>
</html>

it was all tied up, all you need to do is run the whole ducument in your server, and 3 files must be on the same directory...

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.