向用户显示一个框。他输入一个字符串并按下确定。 他被发送到结果页面,其中有一些针对结果的php脚本的异步调用。如何使php请求的完成开始基于第一个结果的另一个请求?
但是,在同一页上,还有其他字段也需要启动一个php请求,但他们需要首先获得第一个请求的结果。
换句话说,
页推出20个请求。 只要请求完成,它就需要根据第一个请求的结果再发起3个请求。
我该怎么做,而不必同步执行这20个请求,然后重定向到第二步的第二页?
谢谢
向用户显示一个框。他输入一个字符串并按下确定。 他被发送到结果页面,其中有一些针对结果的php脚本的异步调用。如何使php请求的完成开始基于第一个结果的另一个请求?
但是,在同一页上,还有其他字段也需要启动一个php请求,但他们需要首先获得第一个请求的结果。
换句话说,
页推出20个请求。 只要请求完成,它就需要根据第一个请求的结果再发起3个请求。
我该怎么做,而不必同步执行这20个请求,然后重定向到第二步的第二页?
谢谢
这是不是可以用AJAX做的事情?或者这是你问的问题?
这里是一个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教程。你会得到它的窍门。
我想这可以做到,但我是一个总的ajax初学者。 我想要一些指针来寻找什么。什么条件。 – Wojtek 2010-03-05 07:11:35