jQuery load正在截断开头

时间:2010-02-01 00:32:34

标签: jquery wordpress

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

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:2)

如果您使用$.get$.ajax使用GET方法,那么IE将缓存AJAX请求。为了防止它,这个简单的黑客将会这样做:

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

nbRandomURL未使用的参数名称,但只是为了让IE认为这是新请求,因此不会使用缓存。

<强>更新

我检查了网站。请记住,我不使用IE浏览器。 在页面中,我看到<div>关闭标记后有一个<div id="weatherdata">标记。此单<div>没有关闭标记,但后面紧跟</td>。请检查页面中的标记余额,确保所有平衡且有效的XHTML。大多数bug和quirk行为来自不平衡和未闭合的标签。

可能或可能没有相关的其他事情,我从不在我的代码中使用.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,然后在任何地方使用它。没有重复的代码,当您需要更新它时会很难。此外,由于您使用UpdateWeatherBar()致电setInterval,因此从该函数中移出jQuery(document).ready()阻止可能会使错误消失。

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

答案 1 :(得分:0)

如果我不得不猜测我会说你正在写文件时抓住文件。没有详细说明编码文件锁定系统来保护读取,而它被写入i我会建议测试文件以获得预期的最后一行数据...如果它不存在则将负载延迟几秒/毫秒

答案 2 :(得分:0)

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