用JavaScript与WebService实现网页部分数据XML传送
2010-09-14 13:43:06 来源:WEB开发网二、异步调用WebService,解析XML
声明两个变量,用来存储ActiveX对象:
var objXMLData; //存储要解析的 XML 文档
var objXMLStyle; //存储 XSLT STYLE
通过JavaScript调用WebService的代码如下:
function doSearch()
{
var iCallID;
iCallID = htcWService.Garkcx.callService(dataArrived, "DoSearch", strUserGUID, strSearchMethod, strDataBaseName, strSearchCondition, encodeMethod);
}
因为是异步调用,所以当远程服务调用完成后会触发dataArrived方法。”DoSearch”后的内容是调用WebService所跟的参数。下面我们看看dataArrived代码:
function dataArrived(objResult)
{
if(objResult.error)
{
var strErrorCode = objResult.errorDetail.code;
var strErrorMsg = objResult.errorDetail.string;
var strErrorRaw = objResult.errorDetail.raw;
document.all('ErrorMessage').innerHTML = '<b>* 错误 -</b> 无法找到指定身份证号的用户。<br />' + strErrorMsg;
}
else
{
try
{
objXMLData = new ActiveXObject('MSXML2.FreeThreadedDOMDocument');
}
catch(e){}
// 判断解析器对象是否可以使用
if (objXMLData == null)
{
document.all('ErrorMessage').innerHTML = '* <b>错误: 不正确的 XML 解析器版本.</b><br />';
return;
}
//此处有一些解码的代码,省略
strResult = objResult.value;
// 事件不断被触发,检测XML数据是否装载完成
objXMLData.onreadystatechange = dataLoaded;
objXMLData.validateOnParse = true;
objXMLData.async = true;
// 装载从 Web Service 返回的结果
objXMLData.loadXML(strResult);
}
}
function dataLoaded()
{
// 异步访问,如果 XML 解析器的 readyState 属性为 4, 表示装载结束。
if (objXMLData.readyState == 4)
{
if (objXMLData.parseError.errorCode != 0)
// 装载过程出现错误
document.all('ErrorMessage').innerHTML = '<b>* 错误</b> - 无法解析 XML 数据结果.';
else
{
document.all('SearchResult').innerHTML = '';
ApplyXslStyle(); // 应用 XSLT 样式
}
}
}
Tags:JavaScript WebService 实现
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接