2010-02-22 2 views
0

Ниже приведен код на моей странице осиныКак вызвать три функции ajax вместе?

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 секунд

надеясь вашу помощь плз,

+0

Вы должны действительно изучить что-то вроде jQuery для обработки ваших вызовов ajax ... выполнение try/catch с объектами ActiveX охватывает только IE-браузеры, а реализация jQuery работает со всеми основными платформами без какого-либо реального сложного кода на вашем конце. – Andir

ответ

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> 

РНР часть (в верхней части) в основном просто тратить некоторое время, в зависимости от значения секунд. Хотя на самом деле это занимает примерно 1/6-е количество требуемого времени. Вот выход из запуска сценария:

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

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

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

+0

спасибо ... что мне нужно, i wand to invock (Delay ('30 ') && Delay ('10') && Delay ('5') эти функции параллельны – Alex

+0

@Alex: вы * * выполняете запросы параллельно, за исключением, возможно, ограничений браузера (некоторые браузеры ограничивают количество подключений до двух на один хост) – icktoofay

Смежные вопросы