gpt4 book ai didi

jquery - 同步 Ajax 上的加载指示器

转载 作者:行者123 更新时间:2023-12-03 22:23:34 25 4
gpt4 key购买 nike

我在网站上使用 ajax 和 jQuery,需要显示进度/加载指示器。

我的困境是这样的:

  • 同步 AJAX 会锁定浏览器,因此在返回内容之前我无法执行任何操作(例如显示加载指示器),到那时就为时已晚了
  • 我使用 JSON 作为返回数据类型,并且设置 async = true 返回空响应字符串
  • 我的整个框架依赖于 JSON 格式的返回类型

除了执行alert()之外,我似乎找不到任何方法让JS向用户指示某些事情正在进行中。 (由于某种原因,警报确实有效)。

有什么建议吗?

我的代码:

JS

var jqXHR = $.ajax(
{
type: "POST",
url: url,
cache: false,
data: params, // array of parameters
async: false, // responseText is empty if set to true
dataType: 'json',
error: function()
{
alert("Ajax post request to the following script failed: " + url);
}

} );

var html = jqXHR.responseText;

PHP

$return = array();
$return['status'] = 1;
$return['message'] = "some html here ...";
echo json_encode($return);

最佳答案

在调用ajax请求之前需要展示一个正在加载的显示您可以使用回调函数和成功来隐藏加载显示

  //show here the loading display
$(".loading").show();
setTimeout(function() {
var jqXHR = $.ajax({
type: "POST",
url: url,
cache: false,
data: params, // array of parameters
async: false, // responseText is empty if set to true
dataType: 'json',
error: function(){
alert("Ajax post request to the following script failed: " + url);
},
success: function(){
//hide loading display here
$(".loading").hide();
}
});
}, 0);

在调用 ajax 函数之前,您需要使用 setTimeout() 进行延迟,因为它甚至可以停止加载显示的显示,因为 while $(".loading").show ();正在制作动画,将调用同步ajax请求,并且在加载显示动画完成之前肯定会锁定浏览器

关于jquery - 同步 Ajax 上的加载指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16599915/

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