2010-03-05 21 views
0

向用户显示一个框。他输入一个字符串并按下确定。 他被发送到结果页面,其中有一些针对结果的php脚本的异步调用。如何使php请求的完成开始基于第一个结果的另一个请求?

但是,在同一页上,还有其他字段也需要启动一个php请求,但他们需要首先获得第一个请求的结果。

换句话说,

页推出20个请求。 只要请求完成,它就需要根据第一个请求的结果再发起3个请求。

我该怎么做,而不必同步执行这20个请求,然后重定向到第二步的第二页?

谢谢

回答

1

这是不是可以用AJAX做的事情?或者这是你问的问题?

+0

我想这可以做到,但我是一个总的ajax初学者。 我想要一些指针来寻找什么。什么条件。 – Wojtek 2010-03-05 07:11:35

0

这里是一个Ajax教程:http://www.w3schools.com/Ajax/Default.Asp

下面是一个使用AJAX给你一个真实的例子的想法的联系人页面:

<script type="text/javascript"> 
function ajax(url) 
{ 
    var test = 0; 

    var name = document.getElementsByName('name')[0]; 
    var phone = document.getElementsByName('phone')[0]; 
    var email = document.getElementsByName('email')[0]; 
    var msg = document.getElementsByName('msg')[0]; 

    if(name.value == ""){ name.style.backgroundColor = "#FFFFCC"; test=1; 
    }else{ name.style.backgroundColor = "#FFFFFF"; } 

    if(email.value == ""){ email.style.backgroundColor = "#FFFFCC"; test = 1; 
    }else{ email.style.backgroundColor = "#FFFFFF"; } 

    if(msg.value == ""){ msg.style.backgroundColor = "#FFFFCC"; test = 1; 
    }else{ msg.style.backgroundColor = "#FFFFFF"; } 

    if(test == 1){ 
     $j("#error").slideDown(600, function(){ }); //Using jQuery 
     return false; 
    }else{ 
     document.getElementById('contactButton').value = "Sending"; 
     $j("#error").slideUp(600, function(){ }); 
    } 

    if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else{// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    url = url + "?name=" + name.value; 
    url = url + "&phone=" + phone.value; 
    url = url + "&email=" + email.value; 
    url = url + "&msg=" + encodeURI(msg.value); 


    xmlhttp.onreadystatechange=stateChanged; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 

    function stateChanged(){ 
     if (xmlhttp.readyState==4) { 
      var response = xmlhttp.responseText; 
      if(response == "true"){ 
       document.getElementById('contactForm').reset(); 
       document.getElementById('contactButton').value = "Sent :)"; 
      }else{ 
       document.getElementById('contactButton').value = "Can't send your message now :("; 
      } 
     } 
    } 
} 
</script> 

<div id="error" style="display:none; width:100%; border:1px solid #000000; background-color:#91B933; text-align:center">Please fill in all the highlighted areas.</div> 
<div style="width:100%"> 
<div style="float:left; width:auto; position:relative; left:50%;"> 
<div style="float:left; position:relative; left:-50%;"> 
    <div style="float:left; margin:20px;"> 
    <form id="contactForm"> 
    <table border=0 style="width:300px;"> 
    <tr><td>Name:</td><td><input type="text" name="name"></td></tr> 
    <tr><td>Phone Number:</td><td><input type="text" name="phone"></td></tr> 
    <tr><td>Email:</td><td><input type="text" name="email"></td></tr> 
    <tr><td colspan=2>Message:</td></tr> 
    <tr><td colspan=2><textarea name="msg" style="width:95%"></textarea></td></tr> 
    <tr><td colspan=2 align=right><input id="contactButton" type="button" onclick="ajax('contact.php')" value="Send"></td></tr> 
    </table> 
    </form> 
    </div> 
</div> 
</div> 
</div> 

<div id="response" style="display:block;"></div> 

XMLHttpRequest对象(或浏览器相应的版本)是果汁。

因此,在您的示例中,用户输入他们的文本并单击提交,而不是将它们发送到另一个页面,您可以使用onclick =“”来调用一个javascript函数,该函数会将XMLHttpRequest发送到您的php页。然后你可以使用xmlhttp.responseText;阅读您从PHP页面回复的回复。

如果你使用var response = xmlhttp.responseText;就像在上面的例子中那样,然后你会在你的php页面中得到一个名为response的变量的响应,你可以使用它来创建另一个XMLHttpRequest到另一个php页面。

有意义吗?

浏览一些Ajax教程。你会得到它的窍门。

相关问题