我有一个问题,我似乎无法找到解决办法。
问题是,我通过ajax调用加载图像和一些文本,然后一段时间后我尝试再次调用ajax函数来获取新的图像和文本集。但是我的问题是图像没有及时加载(文本加载一切都很好)他们有点停止加载然后接下来调用ajax。
有解决这个问题的方法吗?
我真的很感谢某人的帮助。
编辑:似乎是setTimeout(“”,30000);在firefox和IE上使用不同的速度。有没有办法将它设置为一分钟,我试着把它设置为60000,但在时间过去方面得到相同的结果,直到它调用ajax ......
这是我的代码:
HTML
<asp:Panel ID="portfolio" runat="server" style="border:solid 1px black; height:300px; width:400px; display:none;">
<div id="div_before">
<img id="img_before" alt="" height="200" width="100" />
<span id="txt_before"></span>
</div>
<div id="div_after">
<img id="img_after" alt="" height="200" width="100" />
<span id="txt_after"></span>
</div>
</asp:Panel>
我的javascript:
function getPortfolio() {
$.ajax({
type: "POST",
url: "Portfolio.aspx/GetImages",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
onCallBack(msg);
}
});
}
function onCallBack(msg) {
var result = msg.d;
if (result != null) {
var portfolio_div = $("div[id*='portfolio']");
$(portfolio_div).css({ 'display': 'block' });
var imgs = $(portfolio_div).find("img");
$("#img_before").attr({ src: "images/" + result.img_before.toString() });
$("#img_after").attr({ src: "images/" + result.img_after.toString() });
var txts = $(portfolio_div).find("span");
$(txts[0]).text(result.txt_before);
$(txts[1]).text(result.txt_after);
setTimeout("", 30000);
getPortfolio();
}
else {
$(portfolio_div).css({ 'display': 'none' });
}
}
答案 0 :(得分:2)
我不确定你要做什么 - 看起来你期望setTimeout tyo是同步的(例如阻止js执行)。
您确定不想要
吗?setTimeout(getPortfolio, ...)
如果你正在等待负载完成,你真的应该使用image.onload ...
答案 1 :(得分:0)
应该是
setTimeout('getPortfolio()',...)
而不是
setTimeout(getPortfolio(),...)
如果您的代码与上面相同,则只调用一次getPortfolio()方法(不是每个间隔)。它将立即调用setsetoutout ..