我确定这个问题并不少见并且已经得到解答,但我只能在JQuery(我不理解)中找到答案。
我有一个AJAX函数,其中检索来自php脚本的数据。 AJAX函数的一个参数是回调函数,它在成功检索数据后被调用 但是,如果多次调用AJAX函数,则只调用最后一个回调函数。我已经读过,这可能是一些可变范围问题。
现在我的问题是:我怎样才能使它工作,以便每次调用AJAX函数时,相应的回调函数都会被正确调用?
到目前为止我尝试了什么:
我想出如果我使AJAX调用同步,我就不会有这个问题。但这是我真的不想做的事情,因为有时需要很长时间来检索数据。
这是AJAX功能:
function getData(callback)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState === 4 && xmlhttp.status === 200)
{
var data = JSON.parse(xmlhttp.responseText);
callback(data);
}
};
xmlhttp.open("GET", "../PHPScripts/getData.php?q1=someparameters", true);
xmlhttp.send();
}
这是两个来电者:
function createElements()
{
[...]
createAnotherElement();
var callback = function()
{
[gets successfully called]
};
getData(callback);
}
function createAnotherElement()
{
var callback = function()
{
[Never gets called]
};
getData(callback);
}
非常感谢任何帮助。