有人知道如何设置ServerXMLHTTP请求超时时的默认操作吗?我正在使用setTimeouts()根据MSDN site设置超时选项。
理想情况下,我想从头开始再次初始化请求,或者在超时时刷新页面。
我正在使用经典的asp和jscript。
这是我的要求:
function serverXmlHttp(url) {
var serverXmlHttp;
serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0");
// set time out options
serverXmlHttp.setTimeouts(15000,15000,15000,15000);
// does not work
// serverXmlHttp.ontimeout(Response.Write("page has timed out"));
serverXmlHttp.open("GET", url, false);
serverXmlHttp.send();
if (serverXmlHttp.readyState == 4) {
return serverXmlHttp.responseText;
}
}
答案 0 :(得分:5)
重要的是要弄清楚它为什么会超时......
远程Url与呼叫页面在同一个应用程序上吗?
如果有,请查看 INFO: Do Not Send ServerXMLHTTP or WinHTTP Requests to the Same Server ,因为您将面临线程饥饿..
答案 1 :(得分:3)
想出来。我只需要使用try / catch语句。
function serverXmlHttp(url) {
try {
var serverXmlHttp;
serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0");
// set time out options
serverXmlHttp.setTimeouts(15000,15000,15000,15000);
serverXmlHttp.open("GET", url, false);
serverXmlHttp.send();
if (serverXmlHttp.readyState == 4) {
return serverXmlHttp.responseText;
}
catch(error) {
// whatever I want to happen if there's an error
Response.Write("Sorry, your request has timed out");
}
}