我有一个JavaScript函数,它使用jQuery创建两个连续的Ajax请求。我想确保第一个请求在第二个函数被调用之前已经加载。有什么办法可以做到这一点?确保第一个Ajax函数在第二个之前完成
回答
可以在$.ajax
选项中指定async: false
,或者在complete
第一次调用回调中进行第二次ajax调用。
这不是'async:false'吗? – 2010-01-04 23:31:13
的确如此。补充负面的逻辑。 – 2010-01-04 23:32:28
'async:false'很好。我称这两个函数的顺序不同,所以它比回调方法更受欢迎。 – Brian 2010-01-04 23:38:42
在第一个函数的回调中,进行第二次调用。
为了获得最佳效果,您应该调用第一个回调函数中的第二个函数。
例如:
$.post("http://www.somewebsite.com/page.php", function(data) {
// whatever
function2();
});
$.post("script1.php", {data:"val"}, function(response) {
$.post("script2.php", {data:response}, function(results) {
// this second call will be initialized when the first finishes
});
});
示例实现:
function callback() {$('div#second_ajax_output').load('http://www.google.com');}
$('div#first_ajax_output').load('http://www.yahoo.com',callback);
编辑:误读的问题;我的错。如果您想要同时执行两个AJAX请求,但只有在完成后才执行回调,这就是您的做法!
试试这个:
var completedCount = 0;
var callback = function()
{
completedCount++;
if (completedCount == 2)
{
// Do something.
}
};
$.post('url-1', {}, callback);
$.post('url-2', {}, callback);
使用jQuery最简单的方法是这样的:
$.ajax({
type: "POST",
url: "some.php",
success: function(msg){
$.ajax({
type: "POST",
url: "some2.php",
success: function(msg){
alert("End of second call");
}
});
}
});
简单的方法就是给第二个请求时,第一个返回(在完成回调)。
如果您需要更复杂的方法,请查看AjaxQueue插件。你可以用这种方式排队请求。
- 1. 第二个函数在第一个完成之前启动,Javascript
- 2. 当第一个调用完成后,触发第二个ajax函数
- 3. 有两个即刻完成的代码可能会在第一行完成之前完成第二行吗?
- 4. 在完成第一个SoundEffect后播放第二个SoundEffect
- 5. Flexbox在第二个孩子之前舍弃第一个孩子
- 6. .NET在第一个成功之后创建第二个Ajax调用
- 7. 等待异步:如何在第二个启动之前完成一个方法
- 8. 如何让第二个GUI等到第一个完成?
- 9. 开始第二个JavaScript时,第一个完成
- 10. 如何确保一个佐贺完成之前完成?
- 11. 将第二个td移到第一个td之前
- 12. 递归调用ajax函数,直到第一个ajax函数完成
- 13. zsh自动完成,基于第一个参数的第二个参数
- 14. 在一个jquery函数中,只调用第二个函数一个函数第一个函数返回结果
- 15. 如何在第二个完成时运行一个异步函数?
- 16. 获取第二个AJAX调用响应之前的AJAX调用
- 17. 触发第一个ajax的第二个ajax
- 18. 第一次事件完成之前第二次注册的Silverlight点击事件
- 19. 如何在第二个函数中使用第一个函数的返回值?
- 20. 在另一个函数中调用第二个函数
- 21. 前一个函数(包含ajax)完成后调用函数
- 22. 选择正确的RxJS构造以确保一个订阅在另一个订阅完成之前完成
- 23. 上一个函数完成之前执行的Javascript函数
- 24. jQuery知道第一个过渡已经完成,然后使第二个
- 25. 第二个AJAX响应重写第一个(JS,JSON)
- 26. .ajax()调用在上一个.ajax()调用完成之前不会完成?
- 27. 如何确保第一个随机值总是大于第二个?
- 28. jquery自动完成将一个变量传递给第二个自动完成
- 29. C++从一个类的第二个函数不能访问第一个
- 30. 在第二个函数上禁用ajaxStart()
它是需要等到第一个返回的第二个* Ajax *调用,还是需要等待的第二个*回调*? (也就是说,你是否需要在发出第二个Ajax请求之前等待,或者两者都可以一个接一个地被触发,但是你想确保如果第二个Ajax请求首先返回,它的回调将被阻止,直到第一个返回) – Graza 2010-01-04 23:34:54
第二个函数在第一个函数完成之前不应该被触发。第一个函数创建一个表单元素,第二个函数获取该表单的值并根据它进行一些计算。 – Brian 2010-01-04 23:43:33