0

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 は別の方法で処理されますか?

4

1 に答える 1

1

なんとなくわかったのですが、どうしてそうなるのかわかりません。

追加:

response.setBufferSize(cLen);

サーブレットに IE を満足させます。パラメータのデフォルトは 8192 で、IE は残りのストリームを要求しないと思いますか? 私が言ったように、なぜそれが機能するのかわかりません。それは私を緊張させます!

于 2010-09-27T16:04:49.407 に答える