如何一起调用三个ajax函数?

时间:2010-02-22 17:29:47

标签: javascript asp-classic

以下是我的asp页面中的代码

Ajax.asp

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ajax.asp</title>
<script type="text/javascript">
function Delay(SECOND)
{
var xmlHttp;
try
  {  
  xmlHttp=new XMLHttpRequest();  }
catch (e)
  { 
   try
    {    
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
     }
  catch (e)
    {   
     try
      {     
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
          }
    catch (e)
      {      
      alert("Your browser does not support AJAX!");      
      return false; 
           }    
           } 
            }
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      { 
    alert(xmlHttp.responseText);     
      }
    }   
    xmlHttp.open("GET","Delay_Page.asp?SECOND="+SECOND,true);
    xmlHttp.send(null); 
    return true
   }
</script>
</head>

<body>

// below is the button for passing seconds 

<input onclick="javascript:return (Delay('30')&& Delay('10')&& Delay('5'));" type="button" value="Button" name="B3">
</body>

</html>

Delay_Page.asp 中,这是代码

<%
ss= request.querystring("SECOND")

Sub Delay(DelaySeconds)
SecCount = 0
Sec2 = 0
While SecCount < DelaySeconds + 1
Sec1 = Second(Time())
If Sec1 <> Sec2 Then
Sec2 = Second(Time())
SecCount = SecCount + 1
End If
Wend 
End Sub

Delay(SECOND)

response.write SECOND &" SECONDS left"
%>

上面的代码工作正常,但我想解决一些问题

我需要的是

我想一起调用Delay('30')&& Delay('10')&& Delay('5'))个功能

现在条件是,当第一个函数完成Delay('30')之后,只有它转到第二个函数

现在完成该功能的总时间为45秒(30 + 10 + 5)

我需要在30秒内完成这三项功能

希望你的帮助PLZ,

1 个答案:

答案 0 :(得分:0)

我无法真正看到你的问题所在,所以它必须在你的asp页面中。我很遗憾地说我目前无法测试asp,所以我无法帮助那里。但是,我在PHP中写了一个假延迟并运行你的javascript。这是我以前测试的内容:

<?
if (isset($_GET['SECOND'])) {


    for($i=0;$i<$_GET['SECOND']*100000;$i++) {
        $x = sqrt($i);
    }
    echo $_GET['SECOND'].': x='.$x;
    die();
}

?>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ajax.asp</title>
<script type="text/javascript">
function Delay(SECOND)
{
var xmlHttp;
try
  {  
  xmlHttp=new XMLHttpRequest();  }
catch (e)
  { 
   try
    {    
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
     }
  catch (e)
    {   
     try
      {     
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
          }
    catch (e)
      {      
      alert("Your browser does not support AJAX!");      
      return false; 
           }    
           } 
            }
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      { 
     document.getElementById('output').innerHTML += xmlHttp.responseText + "<br />";     
      }
    }   
    xmlHttp.open("GET","ajax-test.php?SECOND="+SECOND,true);
    xmlHttp.send(null); 
    return true
   }
</script>
</head>

<body>

// below is the button for passing seconds 

<input onclick="javascript:return (Delay('30')&& Delay('10')&& Delay('5'));" type="button" value="Button" name="B3">
<div id='output'></div>
</body>

</html>

PHP部分(在顶部)基本上只是浪费一些时间,具体取决于SECONDS值。虽然,它实际上只需要大约1/6的时间。以下是运行脚本的输出:

5: x=707.106074079
10: x=999.9995
30: x=1732.05051889

基本上,这只是显示在DELAY(10)之前返回5 DELAY(5),它在DELAY(30)之前返回,即使它们是以相反的顺序请求。

所以,看看你的asp延迟代码,因为问题必定存在。对不起,我无能为力。