【发布时间】:2011-12-27 16:55:55
【问题描述】:
为了在执行 ajax 请求时有一个指示器,我得到信息说我应该将带有动画 gif 的指示器放在页面元素中,然后在 ajax 函数成功时替换数据。
如果我使用 src="ajax-loader.html" 添加指标源,则 ajax 调用会将其保留在原位,不会用数据替换它。如果我使用 .load("ajax-loader.html") 添加指标源,则在 ajax 调用之前它根本不会显示。如果我在 beforesend 事件的 ajax 调用中添加它,它也不会显示。如果我进行两次 ajax 调用,一次加载指标,一次加载数据,同样会发生。必须有一种方法可以在这个简单的代码中显示指标。
这是页面元素的 HTML。
<iframe id="lcupco" style="position: relative; top: 5px; width: 100%; height: 200px; border: 2px solid grey; margin-bottom: 15px;"></iframe>
这是指标的 HTML。
<html>
<head></head>
<body>
<img src='images/ajax-loader.gif'/>
</body>
</html>
这是代码
-
调用.load
$(document).ready(function(){ $('#lcupco').load("ajax-loader.html");}); $.ajax({ url: 'luxcal/index.php?cP=40', cache: false, async: true, success: function(data) { $('#lcupco').html(data); }, }); 使用前发送
`
$.ajax({
url: 'luxcal/index.php?cP=40',
cache: false,
async: true,
beforeSend: function() {
$('#lcupco').load('ajax-loader.html');
// $('#lcupco').html('<html>Initializing calendar...</html>'); //simple text didn't load either.
},
success: function(data) {
$('#lcupco').html(data);
},
});
- 使用两个 ajax 调用:一个用于指标,一个用于数据
`
$.ajax({
url: 'ajax-loader.html',
cache: false,
async: true,
success: function(data) {
$('#lcupco').html(data);
},
});
$.ajax({
url: 'luxcal/index.php?cP=40',
cache: false,
async: true,
beforeSend: function() {
$('#lcupco').html('<html>Initializing calendar...</html>');
},
success: function(data) {
$('#lcupco').html(data);
},
});
`
【问题讨论】:
-
嗯,这很奇怪。你为什么要更新 iframe 的内容(顺便说一下,它似乎没有 src。另外,如果你想走 iframe 路线,你不能只更新 iframe 的 src 来获取内容(不需要 ajax)。另外,你可以覆盖加载器 img 而不调用单独的页面吗?
标签: javascript ajax indicator