gpt4 book ai didi

jquery - 同时执行同步和异步 AJAX

转载 作者:行者123 更新时间:2023-12-01 04:21:42 25 4
gpt4 key购买 nike

我想要运行 AJAX 来获取一些 URL 数据,从数据构建一个对象并将其分配给全局对象变量。所以我知道我需要运行一个同步 ajax 请求。 (对吗?)好吧,我还想利用 beforeSend 设置为我的用户提供加载屏幕。 (我可能应该首先问,beforeSend 是实现这一目标的唯一方法吗?)我如何将同步和异步的优点结合起来?

异步:

$.ajax({
url:'scripts/scripts.php?call=page&url='+thisurl, /*local*/
dataType:'html',
beforeSend:function(){
$('#display').html('<div class="loading"></div>');
},
success:function(data, textStatus, jqXHR){
/*local*/ myobj = getMyObj(data); $('#display').html(myobj);
},
error:function(jqXHR, textStatus, errorThrown){ }
});

同步:

$.ajax({
url:'scripts/scripts.php?call=page&url='+thisurl, /*local*/
dataType:'html',
async:false,
success:function(data, textStatus, jqXHR){
/*global*/ myobj = getMyObj(data);
}
});
$('#display').html(myobj);

抱歉,如果这没有意义

最佳答案

嗯,嗯,很明显,如果您想在同步 ajax 函数之前显示某些内容,您可以这样做:

$('#display').html('<div class="loading"></div>');
$.ajax({
url:'scripts/scripts.php?call=page&url='+thisurl, /*local*/
dataType:'html',
async:false,
success:function(data, textStatus, jqXHR){
/*global*/ myobj = getMyObj(data);
}
});
$('#display').html(myobj);

另一方面,为什么要使用同步 Ajax 函数,这是一个非常糟糕的主意,请使用 Promise 来代替,或者类似的东西:

var Ajax = $.ajax({
url:'scripts/scripts.php?call=page&url='+thisurl,
dataType:'html'
});

//do something later
$("#mybutton").on('click', function() {
Ajax.done(function(data) { //if/when the ajax function is completed
$('#display').html(data);
});
});

或者将 ajax 放在一个单独的函数中并以相同的方式运行,除了同步 Ajax 调用之外还有很多选择!

关于jquery - 同时执行同步和异步 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9952242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com