js调用web service,为何不能刷新数据?
叶子哟 2004-12-12 01:58:02 很简单的一个网页,用js自动更新,只能更新两遍,再也不能刷新,但点button可以:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<div id="divWebServiceResults"></div>
<INPUT style="Z-INDEX: 101; LEFT: 280px; POSITION: absolute; TOP: 176px" type="button"
value="Button" onclick="getWebServiceResultsAfterInit();" >
</form>
<script language="javascript">
getWebServiceResultsAfterInit();
setTimeout(getWebServiceResultsAfterInit,1000); //********只能执行一遍,为何?******
var objXmlDoc;
var objHttp;
var bHttp = false;
function getWebServiceResultsAfterInit() {
if(!bHttp)
{
var aszHttpProgIDs = [ "MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP" ];
for (var i = 0; !bHttp && i < aszHttpProgIDs.length; i++) {
try {
objHttp = new ActiveXObject(aszHttpProgIDs[i]);
bHttp = true;
} catch (objException) {
}
}
}
if (!bHttp) {
return;
}
strEnvelope = "<soap:Envelope xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xsd=\"http://www.w3.org/2001/XMLSchema\"" +
" soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
" <soap:Body>" +
" </soap:Body>" +
"</soap:Envelope>"
objHttp.open("post", "http://localhost/WebService1/Service1.asmx/HelloWorld",false);
objHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
objHttp.setRequestHeader("SOAPAction", "http://localhost/WebService1/Service1.asmx/HelloWorld");
objHttp.send(strEnvelope);
var szResponse = objHttp.responseText;
divWebServiceResults.innerHTML = szResponse;
}
</script>
</body>
</HTML>