Web Services, Part X: Consuming the StockQuote: Handling the Response - Doc JavaScript | WebReference

Web Services, Part X: Consuming the StockQuote: Handling the Response - Doc JavaScript


Web Services, Part X: Consuming the StockQuote

Handling the Response

The onWSresult() function handles the response coming from the Web service. We defined the ONRESULT event handler in the DIV element to which we attached the webservice behavior (see Page 2):

<DIV ID="service" STYLE="behavior:url(webservice.htc)" 
  ONRESULT="onWSresult()"></DIV>

We first check that the call to the Web service was successful. Failure is detected by checking two conditions. The first condition is that event.result.error is a non-zero number (true). The other condition is that the ID returned inside the response (event.result.id) is the same as the ID returned by callService() at the time of the request (iCallID). When the call to the Web service is not successful, we print an error message, including three properties of the errorDetail object: code, string, and raw. Their aim is to give the user as much information as possible for understanding where the problem is.

When the call to the Web service is successful, we need to reformat the response to an easy-to-read table. We first create an ActiveX control:

var xmldoc=new ActiveXObject("MSXML2.DOMDocument.3.0");

We then set the asynchronous mode to false, requesting the XML file loading to finish before continuing on:

xmldoc.async=false;

We load the XML file:

xmldoc.loadXML(event.result.value);

You can see what this XML file looks like on Page 5. We then create another ActiveX control, xsldoc, into which we load the transformation specification stock.xsl:

var xsldoc=new ActiveXObject("MSXML2.DOMDocument.3.0");
xsldoc.async=false;
xsldoc.load("./stock.xsl");

We transform the quotes DOMDocument object (xmldoc) with the transformation DOMDocument object (xsldoc), and put the result in the res DIV (see callstockquote.html):

res.innerHTML=xmldoc.transformNode(xsldoc);

As far as error checking is concerned, there is the possibility that the response is successful, but the returned ID does not match the request ID (iCallID). In this case we give a message:

alert("Something else fired the event!");

Here is the full listing of the onWSresult() function:

function onWSresult() {
  if((event.result.error)&&(iCallID==event.result.id)) {
    res.innerText  = event.result.errorDetail.code;
    res.innerText+="\n"+ event.result.errorDetail.string;
    res.innerText+= "\n"+event.result.errorDetail.raw;
  } else if ((!event.result.error) && (iCallID == event.result.id)) {
           var xmldoc=new ActiveXObject("MSXML2.DOMDocument.3.0");
           xmldoc.async=false;
           xmldoc.loadXML(event.result.value);
           var xsldoc=new ActiveXObject("MSXML2.DOMDocument.3.0");
           xsldoc.async=false;
           xsldoc.load("./stock.xsl");
           res.innerHTML=xmldoc.transformNode(xsldoc);
         } else {
             alert("Something else fired the event!");
           }
}

Next: How to interpret the XML response

http://www.internet.com


Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: March 11, 2002
Revised: March 11, 2002

URL: http://www.webreference.com/js/column105/4.html