DataTable と DataSource (YUI 2.6) があります。XHRDataSource はサーブレットである 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 は別の方法で処理されますか?