JS訪問web服務

實現了查看實時天氣預報,把下面保存個網頁即可。 呵呵~~~~
     
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"
>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>無標題文檔</title>
</head>
<script type="text/javascript" src="js/detect.js"></script>
<script type="text/javascript" src="js/stringbuffer.js"></script>
<body>
<script type="text/javascript">
if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {

    
function XMLHttpRequest() {

        
var arrSignatures = ["MSXML2.XMLHTTP.5.0""MSXML2.XMLHTTP.4.0",
                             
"MSXML2.XMLHTTP.3.0""MSXML2.XMLHTTP",
                             
"Microsoft.XMLHTTP"];
                         
        
for (var i=0; i < arrSignatures.length; i++{
            
try {
        
                
var oRequest = new ActiveXObject(arrSignatures[i]);
            
                
return oRequest;
        
            }
 catch (oError) {
                
            }
 
        }
 
    }
      
}




  
function   test(){   
      
try   
      
{   
          
var   strUrl="http://www.ayandy.com/Service.asmx";    
        
var oBuffer=new StringBuffer()
        oBuffer.append(
'<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> '); 
        oBuffer.append(
'<soap:Body><getWeatherbyCityName xmlns="http://tempuri.org/"> <theCityName>');  
        oBuffer.append(
"昆明"); 
        oBuffer.append(
"</theCityName><theDayFlag>"); 
        oBuffer.append(
"Today"); 
        oBuffer.append(
"</theDayFlag></getWeatherbyCityName></soap:Body></soap:Envelope>"); 
         
         
var   objXMLHttp   =   new XMLHttpRequest();   
         objXMLHttp.open(
"Post",strUrl,   true);   
          objXMLHttp.setRequestHeader(
"Content-Type",   "text/xml;   charset=utf-8");   
          objXMLHttp.setRequestHeader(
"SOAPAction",   "http://tempuri.org/getWeatherbyCityName");   
  
    
          objXMLHttp.onreadystatechange 
= function () {
               
if (objXMLHttp.readyState == 4
              
{
                  
if(objXMLHttp.status==200)
                
{
                
                fnGetWeather(objXMLHttp.responseText.toString());   
                  }
else
                
{   
                  
return  objXMLHttp.statusText ;   
                  }
  
          
            }
     
        }

     
       objXMLHttp.send(oBuffer.toString());    
      }

      
catch(e){alert(e.description);}  
         
   }

 
   
function  fnGetWeather(sTheGet)
   
{
           
var reg = /<string>(.*?)</string>/gi;
        
var arrMatch=sTheGet.match(reg);
           
        
var reg4=/<string>(.*)</string>/;
        
var i;
        
var strAll=new StringBuffer();
        strAll.append(
"今天:");
        
for(i=0;i<arrMatch.length-2;i++)
        
{  
            reg4.test(arrMatch[i]);
            strAll.append(RegExp.$
1);
            strAll.append(
" "); 
            
        }

        
        alert(strAll.toString());
         
   }

alert(test());


</script>
</body>
</html>

     
 
總結:
1.js文件最好不要添加中文註釋,會有不可控制的錯誤。
2.用esc.wsf壓縮js文件最好只用到第3級,第四級會改變變量名稱,但變量有時網頁會用到。
3.注意返回值在onreadystatechange事件中,所以最好有個回調函數。
4.js文件包含其它js文件,必須要用函數實現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章