您的位置:首页 > Web前端 > JavaScript

JS访问web服务

2008-04-27 23:48 183 查看
实现了查看实时天气预报,把下面保存个网页即可。 呵呵~~~~


<!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文件,必须要用函数实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: