【问题标题】:jQuery load is truncating the beginningjQuery 加载正在截断开头
【发布时间】:2010-02-01 00:32:34
【问题描述】:

http://www.gomatagorda.com/matagorda-weather/

我正在使用 jQuery 加载气象站每 60 秒上传一次的 [root]/data/weather-full.htm。

我每 30 秒加载一次该文件,以最大限度地保持数据的新鲜度。

在 Internet Explorer 7/8 中,刷新后,右列数据的一半消失。我尝试了各种解决方案,包括 DIV、前后的空 DIV,甚至是表格​​。每次刷新时,文本数据的第一部分都会消失。

对此的任何帮助表示赞赏。我已经调试这个特定错误大约 2 个月了。

谢谢!

【问题讨论】:

  • root]/data/weather-full.htm 你指的是http://www.gomatagorda.com/data/weather-full.htm吗?您在half of the right column of data 中究竟在谈论什么数据?您的地址不清楚。
  • 是的,我的受限帐户不允许我发布超过 1 个链接。在 IE 中加载第一个链接,查看页面右栏。等待 30 秒。观看该列的前半部分消失。

标签: jquery wordpress


【解决方案1】:

如果你使用$.get,或者$.ajaxGET方法,那么IE会缓存AJAX请求。为了防止这种情况发生,这个简单的 hack 可以做到:

$.get(URL,
      { nbRandom: Math.random() },
      function(data){
        //process AJAX response
      });

nbRandomURL没有使用的参数名,只是为了让IE认为这是新请求,所以不会使用缓存。

更新

我已经检查了该网站。请记住,我不使用 IE。 在页面中,我看到<div id="weatherdata"> 关闭标记之后有一个<div> 标记。这个单一的<div> 没有关闭标签,但紧随其后的是</td>。请检查页面中的标记平衡,确保所有平衡和有效的 XHTML。大多数错误和怪癖行为来自不平衡和未闭合的标签。

其他可能相关或不相关的事情,我从不在我的代码中使用.load(),我也从不在 IE 中遇到任何奇怪或错误。下面我重写你的函数:

function UpdateWeatherBar(){
  var d = new Date();
  $.get("http://www.gomatagorda.com/data/weather.htm",
        { t: d.getTime() },
        function(data){
          jQuery("#weatherbar").html(data);
        });
}

jQuery(document).ready(function($) {
  UpdateWeatherBar();
});

var reloadcam = setInterval(function(){
  UpdateWeatherBar();
}, 30000);

你不需要做if (document.getElementById("weatherbar") != null),jQuery 会自动为你做这件事。

使用上面的代码,你只需要在一个地方编写AJAX,然后在任何地方使用它。当您需要更新它时,没有重复的代码会变得很困难。此外,由于您使用setInterval 调用UpdateWeatherBar(),因此将jQuery(document).ready() 块从函数中移出可能会使该错误消失。

我希望这个和标签平衡检查能够解决 IE 中的错误。

【讨论】:

  • 他已经在 URL 中添加了时间(除非他只是在您发表评论后更改了它)。
  • +1 和 (new Date()).getTime()) 随机将是一种更可靠的方式(我知道只是吹毛求疵..)
  • 是的,我添加了防止缓存的时间。不,我今天没有更改网站上的任何内容。 @Gaby:在 Firebug 中观看 NET 窗口时,随机结果似乎总是不同。
【解决方案2】:

如果我不得不猜测,我会说你在写入文件时正在捕获文件。无需详细介绍文件锁定系统的编码以在写入时保护读取,我建议测试文件以获取预期的最后一行数据……如果不存在则将负载再推迟几秒/毫秒.

【讨论】:

  • 如果是这种情况,您可能会在其他浏览器中看到丢失的数据。初始加载似乎也总是在 IE 中工作。
【解决方案3】:

我看到的唯一奇怪的是在出现的第一个 THW 索引之后有一个无关的</。当它添加到文档树时,也许这会弄乱 IE?在那个时候修复 HTML,看看你是否能得到更好的结果。

【讨论】:

  • 哇,我什至没听懂。但是当 IE 确实刷新 div 时,它只显示该部分之后的数据。我敢打赌这就是问题所在。一个小障碍:我必须与客户一起上传专有模板 .htx 文件。气象站获取该文件并用实时数据替换特定变量。谢谢!我会在修复那个小错误后报告。
  • 我认为它会修复它,因为额外的</ 与出现的良好数据的开头很接近。我做了一堆单步调试代码,除此之外一切似乎都很好。顺便说一句,您可能希望将jQuery(document).ready 移到在间隔中调用的函数之外。它不需要被多次调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
相关资源
最近更新 更多