How to invoke three ajax functions together?

梦想的初衷 提交于 2019-12-13 06:33:14

问题


Below is the code in my asp page

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>

In the Delay_Page.asp this is the code

<%
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"
%>

The above code is working fine, but some problems i wants to solve

what i need is

i want to invoke Delay('30')&& Delay('10')&& Delay('5')) functions together

Now the condition is, when the first function finish Delay('30') then after only it goes to the second function

Now Total time to finish the function is 45 seconds (30 + 10 + 5)

I need to finish these three functions in 30 seconds

hoping your help plz,


回答1:


I can't really see where your problem is, so it must be in your asp page. I'm sorry to say that I can't have a way of testing asp at the moment, so I can't help there. but, I wrote a fake delay in PHP and run your javascript. Here's what I used to test:

<?
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>

The PHP part (at the top) basically is just to waste some time, depending on the SECONDS value. Though, it really only takes about 1/6th the amount of time requested. Here is the output from running the script:

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

Basically, this is just showing that 5 DELAY(5) is returning before DELAY(10) which is returning before DELAY(30), even though they are being requested in the opposite order.

So, take a look at your asp delay code, as the problem must be there. Sorry I can't help much otherwise.



来源:https://stackoverflow.com/questions/2312749/how-to-invoke-three-ajax-functions-together

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!