0

可能重复:
使用 jQuery 的并行异步 Ajax 请求

我需要一个接一个地创建 2 个 ajax 请求。然后显示第一个完成的结果。问题是第二个总是等待第一个完成。我试图中止第一个,但第二个仍在等待第一个完成。有什么解决方法吗?

基本上第一个调用解析一些 XML 文件并将记录插入 MySQL 表的 php 脚本。第二个调用 PHP 脚本,该脚本需要返回第一个已导入的 20 条记录。

我尝试了两个 ajax 调用,第一个从 iframe 调用。但结果总是一样的。第二个正在等待第一个完成。我发现的唯一方法是创建子域并使用子域调用第一个。但这在 IE 中不起作用。

任何人都可以解释如何解决这个问题?

也许我需要更多地描述我的问题。首先,我调用 ajax,执行时间为 cca 2 分钟,而第一个正在执行时,我需要有多个请求来检索第一个导入的记录。

4

2 回答 2

3

您可以尝试使用AJAX 回调来完成。您基本上可以输入嵌套回调并完成工作。第一个回调将在您获得解析的 XML 时调用,第二个回调将由第一个回调调用。

更新代码示例:

var callback2 = function(data)
{
   // Callbacks complete
   // Now do some more stuff
}
var callback1 = function(data)
{
   //do something;
   $.ajax({
    url: '/echo/html/',
    success: function(data) {
        callback2(data);
    }
});   
}
$.ajax({
    url: '/echo/html/',
    success: function(data) {
        callback1(data);
    }
});

在上面的示例中,当第二个 Ajax 调用完成时调用 callback2。

于 2012-10-23T08:36:09.830 回答
-1

按顺序调用它们。在您调用第一个之后,它将以异步方式执行。然后你打电话给第二个。那时第一个请求将仍在运行。但它不保证第二个请求将在第一个请求之后发送。所以你可以有一些超时。请参见下面的示例。

$.post('ajax/first_call', function(data) {
    // process returned data of first ajax call
});
window.setTimeout(function(){
    $.post('ajax/second_call', function(data) {
        // process returned data of second ajax call
    });
}, 2000);

这里在 2 秒后请求第二个 ajax 调用。它不依赖于第一次调用。

于 2012-10-23T08:50:22.067 回答