0

我有一个 DataTable 和 DataSource (YUI 2.6)。XHRDataSource 连接到作为 servlet 的 XML 生成地址,我在其中通过 PrintWriter 将 XML 写入响应。

小服务程序:

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 行),IE 可以正常工作。我一直在寻找高低,但我没有想法 - 任何线索我错过了什么?

编辑附加信息。当 XML 响应超过 8192 字符标记时,失败是正确的。根据我的阅读,IE 在 URL 或参数字符串中限制为 8192 个字符 - 但为什么该限制适用于写入响应流本身的数据?还是 XMLHttpRequests 的处理方式不同?

4

1 回答 1

1

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

添加:

response.setBufferSize(cLen);

到 servlet 让 IE 高兴。我猜该参数默认为 8192 并且 IE 不要求流的其余部分?就像我说的,我不知道它为什么会起作用。这让我很紧张!

于 2010-09-27T16:04:49.407 回答