Как вызвать три функции Ajax вместе? - PullRequest
0 голосов
/ 22 февраля 2010

Ниже код на моей странице 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 секунд

надеюсь, что ваша помощь, плз,

1 Ответ

0 голосов
/ 22 февраля 2010

Я не могу понять, где ваша проблема, поэтому она должна быть на вашей странице 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

По сути, это просто показывает, что 5 DELAY (5) возвращается до DELAY (10), который возвращается до DELAY (30), даже если они запрашиваются в обратном порядке.

Итак, взгляните на свой код задержки asp, так как проблема должна быть. Извините, я не могу помочь в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...