如何根据第一个结果完成php请求启动另一个请求?

时间:2010-03-05 05:35:02

标签: php asynchronous

向用户显示一个框。他输入一根绳子然后按OK。 他被发送到结果页面,其中有一些针对结果的异步调用php脚本。

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

换句话说,

页面发布了20个请求。 每当请求完成时,它需要根据第一个请求的结果再发起3个请求。

如何在不必同步执行这20个请求然后重定向到第2页的第二页的情况下执行此操作?

谢谢

2 个答案:

答案 0 :(得分:1)

这不是可以用AJAX完成的吗?或者这是你问的问题?

答案 1 :(得分: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函数,该函数将向您的php页面发送XMLHttpRequest 。然后你可以使用xmlhttp.responseText;阅读您从PHP页面回复的响应。

如果您使用上面示例中的var response = xmlhttp.responseText;,那么您将从一个名为response的变量中获取您的php页面的响应,您可以使用该变量将另一个XMLHttpRequest转换为另一个php页面。

有意义吗?

浏览一些Ajax教程。你会了解它。