2010-12-04 173 views
0

我新的AJAX处理多个Ajax请求

我面临的问题是,我有一个数据库查询需要2分钟来执行......而它在执行我希望用户得到最新的更新即每30秒发生一次从数据库处理的订单数量。

在我开始订单处理查询之前..我打印订单staus ..精细..然后我开始订单处理查询和之间如果我点击更新按钮..它等待订单处理完成然后给我更新...这里是我的代码

<html> 
<head> 
<script type="text/javascript"> 


function getupdate() 
{ 
v=document.getElementById('test').value; 

if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    {alert(v); 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 

    document.getElementById("update").innerHTML=v; 
    //document.getElementById("chunks").innerHTML=xmlhttp.responseText; 

    } 
    } 

xmlhttp.open("POST","querygoogle.php",true); 
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
xmlhttp.send("process=9"); 
} 


function chunks() 
{ 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp1=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp1.onreadystatechange=function() 
    { 
    if (xmlhttp1.readyState==4 && xmlhttp.status==200) 
    { 
     document.getElementById("chunks").innerHTML=xmlhttp1.responseText; 

    } 
    } 
xmlhttp1.open("POST","querygoogle1.php",true); 
xmlhttp1.setRequestHeader("Content-type", "application/x-www-form-urlencoded") 
xmlhttp1.send("process=0"); 
//xmlhttp.send(); 
} 
</script> 
</head> 
<body > 
<span id="txtHint"></span><input name="test" type="text" id="test" onchange="getupdate();" value="3"/> 
<p>Status: </p> 
<div id="chunks" > 
    <p>Being Submitted for Analysis</p> 
    <p> 
    <input name="search" type="button" value="search" onclick="chunks();"> 
    </p> 
</div> 
<p>Update: </p> 
<div id="update" ></div> 

</body> 
</html> 

任何人都可以请求帮助。谢谢

+0

如果您的数据库查询需要2分钟,请尝试优化它们(例如,通过使用索引)。 – ThiefMaster 2010-12-04 12:01:28

回答

1

听起来像你的问题是服务器端而不是客户端。如果我的理解正确,您希望流程如下:

  1. 客户端发送数据库查询请求。
  2. 客户端请求更新。
  3. 已收到更新。
  4. 客户端请求更新。
  5. 已收到更新。 (重复至...)
  6. 收到查询结果。

你做onreadystatechange是异步的,所以客户端界面只是坐在那里等待Ajax调用从服务器返回的行动 - 如果这没有发生,直到处理完成,这意味着您的要求在服务器上停滞不前。

您确定请求更新的服务器端会立即返回状态,还是有可能在处理完成之前停止?

0

是的,这似乎是服务器端问题。看起来服务器无法处理您的更新请求,因为它正在运行数据库查询。