图像加载在setTimeout上的问题

时间:2009-11-06 08:43:37

标签: asp.net javascript asp.net-ajax jquery

我有一个问题,我似乎无法找到解决办法。

问题是,我通过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' });
            }
        }

2 个答案:

答案 0 :(得分:2)

我不确定你要做什么 - 看起来你期望setTimeout tyo是同步的(例如阻止js执行)。

您确定不想要

吗?
setTimeout(getPortfolio, ...)

如果你正在等待负载完成,你真的应该使用image.onload ...

答案 1 :(得分:0)

应该是

  

setTimeout('getPortfolio()',...)

而不是

setTimeout(getPortfolio(),...)

如果您的代码与上面相同,则只调用一次getPortfolio()方法(不是每个间隔)。它将立即调用setsetoutout ..