March 31, 2002 - Validating the Web Service Response | WebReference

March 31, 2002 - Validating the Web Service Response

Yehuda Shiran March 31, 2002
Validating the Web Service Response
Tips: March 2002

Yehuda Shiran, Ph.D.
Doc JavaScript

When attaching the webservice behavior to a DIV element, you need to define the ONRESULT event handler. For example:

<DIV ID="service" STYLE="behavior:url(webservice.htc)" 
  ONRESULT="onWSresult()"></DIV>
The onWSresult() function handles the returned event object. 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.

Here is the full listing of onWSresult():

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!");
           }
  document.body.style.cursor = "default";
}
Learn more about consuming the StockQuote Web service from Column 105, Web Services, Part X: Consuming the StockQuote.