Click here to Skip to main content
15,885,216 members
Articles / Web Development / HTML

A Proxy Generator to WebServices for JavaScript and AJAX

Rate me:
Please Sign up or sign in to vote.
4.71/5 (25 votes)
20 Sep 20058 min read 321.1K   1.6K   82  
Calling a server from JavaScript is a fundamental part of AJAX applications. Using WebServices with SOAP and WSDL is easy if proxy objects and methods are available in the browser.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html xmlns="http://schemas.microsoft.com/intellisense/html-401">

<head>
  <title>Prime factors calculator using WebServices for JavaScript</title>
  <script type="text/javascript" src="ajax.js"></script>
  <script type="text/javascript" src="GetJavaScriptProxy.aspx?service=CalcService.asmx"></script>
</head>

<body>
  <h1>Prime factors calculator using WebServices for JavaScript</h1>
  <table>
    <tbody>
      <tr>
        <th><label for="inputField">Please enter a number:</label></th>
        <td>
          <input id="inputField" onkeyup="StartCalcPrimeFactors()"></td>
        <td style="padding-left: 12px">
          <button onclick="proxies.EnableCache(proxies.CalcService.CalcPrimeFactors)">enable caching</button></td>
      </tr>
      <tr>
        <th><label>The factors are:</label></th>
        <td>
          <input id="outputField" size="60" disabled="disabled"></td>
      </tr>
    </tbody>
  </table>
  <h3>Hint:</h3>
  <p>try 12313123123123 or 12313123123123123123 for long running calculations ! </p>
  <script defer="defer" type="text/javascript">

// to set up a debug output in an alert box use:
// proxies.CalcService.CalcPrimeFactors.corefunc = proxies.alertResult;

// to set up a debug output of the http response body in an alert box use:
// proxies.CalcService.CalcPrimeFactors.corefunc = proxies.alertResponseText;

// attach window.alert for displaying result to make the direct webservice call asynchronous
// proxies.CalcService.CalcPrimeFactors.func = window.alert;

// alert any exceptions...
// proxies.CalcService.CalcPrimeFactors.onException = proxies.alertException;


var _num = "";
var _timer = null;

function StartCalcPrimeFactors() {
  var inputText = document.getElementById("inputField").value;
  if (_num != inputText) {
    if (_timer != null)
      window.clearTimeout(_timer);
    document.getElementById("outputField").value = "wait...";
    _num = inputText;
    // wait 300 msec. before continuing. This allows further typing...
    _timer = window.setTimeout(CalcPrimeFactors, 300, "javascript");
  } // if
}

// calc prime factors
function CalcPrimeFactors() {
  var inputText = document.getElementById("inputField").value;

  if ((inputText == null) || (inputText.length == 0) || (inputText == "0"))
    return; // need no calculation 

  if (proxies.IsActive()) {
    // try again later...
    _timer = window.setTimeout(CalcPrimeFactors, 300, "javascript");
    return;
  } // if

  proxies.CalcService.CalcPrimeFactors.func = displayFactors;  // hook up a method that gets the response
  proxies.CalcService.CalcPrimeFactors(inputText); // now call the server
} // CalcPrimeFactors


// The return value is passed to this function as a parameter
function displayFactors (retVal) {
  document.getElementById("outputField").value = retVal;
} // displayFactors</pre>

  </script>
  <hr />
  <p>This sample uses the WebServices for JavaScript on the client to call a WebService that calculates
    the prime numbers of a given number.</p>
  <p>This page is part of the <a href="http://ajaxaspects.blogspot.com/">http://ajaxaspects.blogspot.com/</a>
    project.</p>
  <hr />
</body>

</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


Written By
Architect Deutsche Bank AG
Germany Germany
see https://www.mathertel.de

Comments and Discussions