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
Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: March 11, 2002
Revised: March 11, 2002
URL: https://www.webreference.com/js/column105/4.html