使用不同的回调函数多次调用相同的AJAX函数

时间:2014-01-14 14:19:19

标签: javascript ajax

我确定这个问题并不少见并且已经得到解答,但我只能在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);
}

非常感谢任何帮助。

0 个答案:

没有答案