2011-10-26 45 views
1

我不确定这是可能的。暂停当前ajax呼叫,执行一个新的,执行后,继续默认的ajax呼叫

我在按钮单击事件期间执行了两个ajax调用。 首先ajax调用是使用jquery ajax post将数据添加到数据库。 第二个是通过jquery ajax post添加另一组数据到数据库太

第一个将执行第一个然后第二个。我已经设置了定时器到第二个电话(windowstimeout)来创建两个执行之间的时间间隔,以测试我是否可以暂停第一个ajax调用。

你会问我为什么我不想结合这两个电话。我有理由这样做,我想知道是否真的有可能暂停ajax调用。我在网上搜索,我发现的只是ajaxstop(jQuery),但它并没有真正暂停,它停止了ajax调用。

所以任何人有任何想法这样做?谢谢。

+1

为什么你不把第二个异步回传放在第一个请求的成功回调中? – lsuarez

+0

不是字面上的,没有。这是请求/响应行为问题,而不是真正的JavaScript。 – Marc

+0

一旦呼叫发送到服务器端,它就不在客户端手中。你不能让服务器在中途暂停,你可以保留第一个结果,直到第二个结束,或者将第二个调用嵌套在第一个中。你可以扩展你想要做的这个暂停吗? – JoshHetland

回答

2

为什么要暂停它?你不能,但你为什么要?让它们都运行,或者直到第二次完成才启动第一个呼叫。

+0

只是为了找出是否存在技术可以做到这一点,我想不是。 – sm21guy

1

不,您不能暂停Ajax调用 - 它们只是普通HTTP请求/响应周期的实例,并且表现得如此。如果由第二次调用产生的服务器端操作依赖于第一次调用的结果,那么为什么不直接链接调用并在第一次成功回调处理程序中触发第二次调用?

1

你不能那样做。

你应该真的问自己,你的数据交换协议的设计是否正确。

暂停请求(无论通信协议是什么,AJAX或任何其他)不应该工作,因为你不知道是否有其他请求和他们做什么。

所以问自己的问题:我确切的需求是什么?还有什么其他方法可以做到这一点?