【问题标题】:problem with images load on setTimeout在 setTimeout 上加载图像的问题
【发布时间】:2010-12-13 18:18:39
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    你确定不想要

    setTimeout(getPortfolio, ...)
    

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

    【讨论】:

    • 您关于 $("#img_after").load(function() 的建议确实有帮助。但是 setTimeout(getPortfolio, ...) 对我不起作用(一开始我所拥有的)。
    【解决方案2】:

    应该是

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

    而不是

    setTimeout(getPortfolio(), ...)

    如果您的代码与上述相同,则 getPortfolio() 方法将仅被调用一次(不是在每个间隔中)。它会在触发 settimeout 时立即被调用..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 2020-02-10
      • 2015-09-05
      相关资源
      最近更新 更多