从单个javascript函数向两个不同的PHP脚本发送两个Ajax请求
是否可以同时向两个或多个Php脚本发送Ajax请求?我知道这可以连续实现(从1得到响应,然后从另一个得到响应),但我想知道这是否可能同时实现。请帮我输入以下代码:从单个javascript函数向两个不同的PHP脚本发送两个Ajax请求,php,javascript,ajax,Php,Javascript,Ajax,是否可以同时向两个或多个Php脚本发送Ajax请求?我知道这可以连续实现(从1得到响应,然后从另一个得到响应),但我想知道这是否可能同时实现。请帮我输入以下代码: function calShowUpload(){ if (http.readyState == 4) { res = http.responseText; document.getElementById('maincontent').innerHTML=res; } } functi
function calShowUpload(){
if (http.readyState == 4) {
res = http.responseText;
document.getElementById('maincontent').innerHTML=res;
}
}
function showUpload(obj)
{
http.open("GET", "./showUpload.php", true);
http.onreadystatechange = calShowUpload;
http.send(null);
}
function getXHTTP() {
var xhttp;
try { // The following "try" blocks get the XMLHTTP object for various browsers…
xhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e2) {
// This block handles Mozilla/Firefox browsers...
try {
xhttp = new XMLHttpRequest();
}
catch (e3) {
xhttp = false;
}
}
}
return xhttp; // Return the XMLHTTP object
}
var http = getXHTTP(); // This executes when the page first loads.
在上面的示例中,我知道我可以调用另一个函数,如showUpload(obj)
insidecalShowUpload()
,以实现我的目标,但我需要这样的功能:
function showUpload(obj)
{
http.open("GET", "./showUpload.php", true);
http.open("GET", "./showDelete.php", true);
http.onreadystatechange = calShowUpload;
http.send(null);
}
您需要两个XMLHttpRequest实例,否则第二个实例将踩下第一个实例。使用现有代码执行此操作最简单的方法就是创建两个实例,并编写JS以使用适合任务的实例
var http1 = getXHTTP(); // Use this for one request.
var http2 = getXHTTP(); // Use this for the other request.
没问题。这实际上是一个非常普遍的问题。另一种解决方案(如果最终得到三个或四个以上的xhr实例)是构建队列机制。不要一次执行所有请求,而是将它们放入队列并执行第一行。然后,当一个请求的响应到达时,触发下一个请求,依此类推。如果它变得比这复杂得多,我会说使用一个库,比如jQuery,来抽象掉所有的复杂性。