我对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?)的这种行为。
非常感谢
编辑:对不起我的英文答案 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的成功事件中方法。