当加载html与ajax在jQuery,我怎么能确保我的加载gif保持可见的整个时间,直到html已添加
When loading html with ajax in jQuery, how can I make sure my loading gif remains visible the entire time until the html has been added?
我有一个ajax调用,它将一些HTML加载到DOM中。如果调用成功,我显示一个旋转加载gif,当调用完成时,我隐藏它。代码:
$.ajax({
url: someUrl,
type: 'POST',
dataType: 'json',
data: someData,
success: function(response){
$(myLoadingGif).show(); // Show the loading gif
$(myContainer).html(response);
},
complete: function(){
$(myLoadingGif).hide(); // Hide the loading gif. Note: HTML has not been added yet
}
});
问题是:即使我在ajax调用的完整部分声明了加载gif,但在添加HTML之前几秒钟就隐藏了。我希望它在整个过程中都是可见的。我不想做一个丑陋的setTimeout() 1000ms只是为了延迟它。我可能会补充说,加载的HTML块相当大。这是一个有20-40行的表。
关于如何确保gif在实际添加HTML之前仍然可见的任何想法?
每次ajax调用返回值时都会触发Success。当Ajax调用返回最后一个值时,Complete触发。因为Ajax调用只返回一次值,所以成功和完成会同时发生。
$(myLoadingGif).show();
$.ajax({
url: someUrl,
type: 'POST',
dataType: 'json',
data: someData,
success: function(response){
// Show the loading gif
$(myContainer).html(response);
$(myLoadingGif).hide();
},
failure: function(){
$(myLoadingGif).hide();
}
complete:function(){}
});
在新的HTML附加到DOM之后,您需要隐藏gif,因此因为. HTML()是同步的,所以在调用. HTML()之后放置的任何代码将在新HTML附加到DOM之后执行。但有时会有延迟,只是因为添加了DOM,但浏览器引擎还没有渲染它,它在那里,但没有显示出来。为此,尝试一个hack,有时它对我很有用:
$.ajax({
url: someUrl,
type: 'POST',
dataType: 'json',
data: someData,
success: function(response){
$(myLoadingGif).show(); // Show the loading gif
$(myContainer).html(response);
},
complete: function(){
setTimeout(function(){$(myLoadingGif).hide();},0);
}
});
相关文章:
- Webpack:如何将原始HTML加载为React JSX
- 画布 HTML 加载时间
- 使用 Ajax 在 html 加载后调用 jquery 插件
- 用javascript(不带外部文件)将html加载到另一个html中
- 错误 404 时,通过 jQuery 将 HTML 加载到 DIV 中
- 如何在将 html 加载到对话框中后更改标签的文本
- 如何将数据从服务器呈现的 html 加载到模型中
- jQuery 从外部 html 加载内容
- Ajax 将 html 加载到页面上并使用页面 js 不起作用
- 如何在没有安全警告的情况下将一个 html 加载到另一个 html 中
- 安卓:根据上一次活动列表中的选择,修改本地静态html加载的JS
- 在AppStore发布时,iOS应用程序上的index.html加载路径不正确
- 使jquery.load在HTML加载之前发生
- 使用jqueryload方法将ajax响应数据作为内部html加载到页面元素中
- HTML加载用户单击按钮时输入的输入字段数
- jQuery Mobile从新html加载第二个页面
- 使用ajax将html加载到Datatable子行中
- 使用JavaScript将HTML加载到DIV
- 使用JS和JQuery替换AJAX中的字符串或html加载
- js函数加载的页面无法使用js函数js-html加载另一个页面