系统操作的AJAX请求占用了AJAX调用的剩余页面


AJAX request for system operation holds up page rest of AJAX calls

我有一堆AJAX请求,第一个是

$.post("go.php", { url: pastedURL, key: offskey, mo: 'inward', id: exID});

这个请求在go.php中包含一个系统命令,尽管有nohup&在最后,并没有停止在萤火虫上旋转——等待回应。

不幸的是,下一个AJAX请求

$.post("requestor.php", { request: 'getProgress', key: offskey}, function(data) { console.log(data.response); }, "json");

不运行,它在firebug中旋转(我猜直到go.php完成)——它最终会重载所有内容(这是在计时器上每隔几秒钟检查一次)。

所以我想问题是,是否有一种AJAX方法可以简单地抛出数据并走开,而不是等待响应。。。或者通过某种方式,我可以在对方等待时执行另一个请求

希望有人知道我的意思。

在jQuery中检查async: false,作为$.ajax()方法的参数。

您需要将其设置为async: true

发现另一端的PHP请求需要这样才能继续等待:-

"> /dev/null 2>/dev/null &"

浏览器使用的连接数量有限。这个数字因浏览器而异,但对于像IE7这样的旧浏览器,每个服务器可能只有2个连接。一旦你用挂起的请求填满它们,你就必须等待这些请求完成,然后才能向该服务器发出任何额外的请求。

(这是一个每隔几秒钟检查一次的计时器)

听起来您可能正在使用setTimeout或setInterval在前面的请求完成之前发出额外的requestor.php请求?如果是这样,就不要那样做。使用一个完整的$.ajax(也许还有一个超时),然后在成功/错误回调中只发出另一个请求。