多个AJAX调用,服务器延迟

时间:2013-07-04 06:49:36

标签: jquery ajax

我对Ajax调用和我的apache服务器的问题感到疯狂。

我有一些脚本php和一个带有javascript的简单html。

var i = 0;
var t = 0;
function comenzar(){
    $.get('testAjax2.php', function (data){
        $('#container').append(data);
    });
    t = setTimeout(function(){
        $('#container').append('timeout<br/>');
        i++;
        $.get('testAjax.php?i='+i, function (data){
        $('#container').append(data);
        });
        if(i == 10)
            clearTimeout(t);
    }, 100);
}

PHP文件testAjax2.php代码:

sleep(10); //sleeps for 10 seconds
echo "done! testAjax2.php";

PHP文件testAjax.php代码:

echo $_GET['i']."<br/>";

人们您对此代码有何看法?

在完成第一个调用之前,我无法进行任何ajax调用。它仅在testAjax2 ajax调用完成时显示第一个。

如果第一个呼叫服务器发生延迟并继续拨打电话,我怎样才能进行多个ajax呼叫?

我完全迷失了,我不知道关于Ajax(或者Jquery?)的这种行为。

非常感谢

编辑:对不起我的英文

2 个答案:

答案 0 :(得分:0)

以下是您需求的简单示例。我只是添加了一个成功回调,这意味着在第一次AJAX调用成功后,将调用分配给成功回调的函数。在回调函数中,您可以添加下一个AJAX调用。

$.ajax('testAjax2.php', 
        success: callNextFunction,            
});

function callNextFunction(data)
{
    $('#container').append(data);

    $.get('testAjax.php?i='+i, function (data){

        $('#container').append(data);

    });
}

答案 1 :(得分:0)

实际上问题在于ajax行为。因为ajax是异步的,所以它不等待响应并且将执行下一个ajax请求,所以如果你有任何依赖于第一个ajax请求的complition或响应值的语句,那么你应该将该代码放在ajax的成功事件中方法。