JS调用Webservice,并处理返回的XML数据

如果在系统中只需要用到一个很简单的无刷新功能,那么没有必要使用庞大的AJAX框架,直接用JS调用Webservice来实现即可:

 

Webservice Code:

 

下面是JS代码:

 

 1 var productid = new Array();//产品ID
 2 var PLprice = new Array();//最低价
 3 var PHprice = new Array();//最高价
 4 var pname = new Array();//产品名称
 5 
 6 function MaxMin_OnClick(oLnk, sContentID)
 7 {
 8     var oContent = document.getElementById(sContentID);
 9     if ( oContent != null )
10     {
11         var oBtn = oLnk.childNodes[0];
12         var sCurrentPath = oBtn.src.toLowerCase().substr(0,oBtn.src.lastIndexOf('/'));
13         var sCurrentFile = oBtn.src.toLowerCase().substr(oBtn.src.lastIndexOf('/'));
14         var sMaxIcon = '/max.gif';
15         var sMinIcon = '/min.gif';
16         if ( sCurrentFile == sMaxIcon )
17         {
18             oBtn.src = sCurrentPath+sMinIcon;        
19             oContent.style.display = '';
20             oBtn.title = 'Minimize';
21         }
22         else
23         {
24             oBtn.src = sCurrentPath+sMaxIcon;
25             oContent.style.display = 'none';
26             oBtn.title = 'Maximize';
27         }
28     }
29         return false;
30 }
31 
32 function GetProductPrice(tableID,MarketId)
33 {
34     var productCount = (document.getElementById(tableID).getElementsByTagName("input").length-1)/3;
35     for(var i=0;i<productCount;i++)
36     {
37         productid[i] = document.getElementsByName('PID'+MarketId)[i].value;
38         PLprice[i] = document.getElementsByName('PLprice'+MarketId)[i].value;
39         PHprice[i] = document.getElementsByName('PHprice'+MarketId)[i].value;
40         pname[i] = document.getElementById(productid[i]).innerText;
41     }
42     //var marketid = document.getElementsByTagName("fieldset")[0].id;
43     var URL = "WebService/ProductOrderWebService.asmx/CreatePrice?productid="+productid+"&PLprice="+PLprice+"&PHprice="+PHprice+"&marketid="+MarketId;
44     var browser = navigator.appName;
45     var xmlhttp;
46     var xmlDoc;
47     if(browser == "Microsoft Internet Explorer"){           //IE浏览器
48         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
49         xmlDoc = new ActiveXObject('Microsoft.XMLDOM');     //创建空的XML文档对象
50     }
51     else{                                                   //其它浏览器
52         xmlhttp = new XMLHttpRequest();
53         document.implementation.createDocument("","",null); //创建空的XML文档对象
54     }
55     xmlhttp.open("GET",URL, false);
56     xmlhttp.send(null);
57     var res = xmlhttp.ResponseText;
58     xmlDoc.async = false;                                   //关闭异步加载,确保在文档完整加载之前,不会继续执行脚本
59     xmlDoc.load(xmlhttp.responseBody);                      //加载XML文档
60     var aRowIds = xmlDoc.selectSingleNode("//string").text; //读取string节点内容
61     if(aRowIds.match('^[index.aspx]\S*')==null)
62         alert(aRowIds);
63     else
64         top.location.href = aRowIds;
65 }
66 
另外,httprequest默认不支持GET方式,需要在配置文件里面修改才行

posted on 2008-08-12 23:10  legolas_z  阅读(3226)  评论(6)    收藏  举报

导航