我有两个ajax调用不能在一个调用中完成。当第一个Ajax调用开始时,第二个Ajax调用可以立即开始,或者当用户按下发送按钮时。如果第二个Ajax调用开始,他必须等待第一个Ajax调用的响应,因为他需要来自它的数据。Ajax呼叫等待另一个Ajax呼叫的响应?
如何才能实现第二个Ajax调用只有在第一个Ajax调用的响应到达后才发送他的请求?
- 是否有另一种方法比setTimeout?
- 我可以以某种方式在ajax调用1上注册ajax调用2的监听器吗?
我的代码是:
var xhrUploadComplete = false;
// ajax call 1
$.ajax({
url: url,
type: "POST",
data: formdata,
processData: false,
contentType: false,
complete: function(response) {
var returnedResponse = JSON.parse(response.responseText);
xhrUploadComplete = true;
}
});
// ajax call 2
if (xhrUploadComplete) {
$.ajax({
url: url2,
type: "POST",
data: formdata2,
processData: false,
contentType: false,
complete: function(response) {
...
}
});
}
编辑:第二个AJAX调用不能在第一次调用的()完成或完成()上公布,因为这取决于用户的选择来发送最终形式。这两步过程的目的是在用户将其插入输入类型=文件后,将图像发送到服务器。
编辑:在知道我不能的if(..),因为这是一个异步调用。我写了它来明确我需要做什么。我想我需要Java中的未来。
难道你不是已经注册了第一个Ajax调用的结果的监听器吗?请告诉我们你的代码。 – Bergi
@Bergi我发布了代码 – confile
“如果第二个Ajax调用启动,他必须等待第一个Ajax的响应=>这没有任何意义,如果它必须等待,那么它不能启动... – Christophe