我正在尝试发出两个并发的AJAX请求。
第一次调用(/ajax_test1.php)需要很长时间才能执行(大约5秒左右)。 第二次调用(/ajax_test2.php)执行时间非常短。
我看到的行为是我/ajax_test2.php返回并且使用/ajax_test2.php中的内容调用处理程序(updateTwo())。
然后,5秒后,/ ajax_test1.php返回并且处理程序被调用(updateOne()),其中来自/ajax_test2.php的内容仍然是!!!
为什么会这样?
答案 0 :(得分:9)
这一行: -
req = new XMLHttpRequest();
应该是: -
var req = new XMLHttpRequest();
答案 1 :(得分:1)
正如AnthonyWJones所说,你的javascript正在声明第二个AJAX对象首先覆盖req变量(由于没有var而假定为全局变量),并且你也覆盖了ajax变量。
你应该分开你的代码,即:
function doOnChange()
{
var ajax1 = new AJAX('ajax_test1.php', 'one', updateOne);
var ajax2 = new AJAX('ajax_test2.php', 'two', updateTwo);
}
function AJAX(url, action, handler)
{
if (typeof XMLHttpRequest == "undefined")
{
XMLHttpRequest = function()
{
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0") } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0") } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP") } catch(e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e) {}
throw new Error( "This browser does not support XMLHttpRequest." )
};
}
url = url + '?action=' + action + '&rand=' + Math.random()
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (req.readyState == 4)
{
if (req.status == 200)
{
alert('' + handler.name + '("' + req.responseText + '") ')
handler(req.responseText)
}
}
}
req.open("GET", url, true);
req.send(null);
}
此致
加文
答案 2 :(得分:0)
Diodeus和Mike Robinson:
你们没有完全阅读我的帖子。我知道其中一个页面的执行时间比另一个页面要长。这是每个页面的预期行为。
HOWEVER 如果您阅读我的原始帖子,问题是两个页面的回调最终会被第一页的HTML内容调用< / em> only。
谢谢你们!这就像一个魅力!我想我需要刷新我的Javascript!