代码之家  ›  专栏  ›  技术社区  ›  Mikeb

对于大型数据集,YUI数据表在IE中失败

  •  0
  • Mikeb  · 技术社区  · 14 年前

    我有一个数据表和数据源(yui 2.6)。xhrataSource连接到一个XML生成地址,这个地址是servlet,在这里我通过printwriter将XML输出到响应中。

    Servlet:

    String data = dataProvider.fetch(request.getPathInfo());
    int cLen = data.length();
    response.getWriter().append(data); 
    response.setContentLength(cLen);
    response.setContentType("text/xml");
    response.getWriter().flush();
    

    JavaScript:

    var url = "../data/SomeProvider";
    this.myDataSource = new YAHOO.util.XHRDataSource(url);
    this.myDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;
    this.myDataSource.connXhrMode = "queueRequests";
    this.myDataSource.responseSchema = responseSchema;
    this.myDataSource.maxCacheEntries = 0;
    

    它在FF3中工作正常。我可以通过Firebug看到返回的XML,它看起来很好;表和其他所有与数据源相关的东西都很好。

    在IE8中,对于完整的数据集(390行..没有那么大,真的),数据表声称没有找到任何行。但是,如果我把大小减小(比如说,20-30行),那就行了。我一直在寻找高低,但我没有想法-有没有线索我错过了什么?

    编辑 其他信息。当XML响应跨越8192字符标记时,失败是正确的。根据我读到的内容,ie在url或参数字符串中的长度限制为8192个字符——但是为什么这个限制会应用于写入响应流本身的数据呢?或者xmlhttpRequests的处理方式不同?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Mikeb    14 年前

    我知道了,但我不知道为什么会这样。

    添加:

    response.setBufferSize(cLen);
    

    对侍者来说我很高兴。我想这个参数默认为8192,IE不要求流的其余部分?就像我说的,我不知道它为什么起作用。这让我紧张!

    推荐文章