2010-09-24 1 views
0

У меня есть DataTable и DataSource (YUI 2.6). XHRDataSource подключается к адресу, производящему XML, который является сервлетом, где я пишу XML из ответа через PrintWriter.YUI Datatable failing in IE для больших наборов данных

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 строк), IE работает нормально. Я искал высоко и низко, но у меня нет идей - подскажите, что мне не хватает?

EDIT Дополнительная информация. Сбой правилен, когда XML-ответ пересекает знак 8192. Из того, что я прочитал, IE имеет ограничение в 8192 символа в URL-адресе или строке параметров, но почему это ограничение применяется к данным, записанным в поток ответов? Или обрабатывать XMLHttpRequests по-разному?

ответ

1

Я понял это, но я понятия не имею, почему это так.

добавления:

response.setBufferSize(cLen); 

в сервлет делает IE счастливым. Я полагаю, что этот параметр по умолчанию равен 8192, а IE не запрашивает остальную часть потока? Как я уже сказал, я не знаю, почему это работает. Это заставляет меня нервничать!

+0

Интересные (+1) –

Смежные вопросы