REST サービスから ajax リクエストへのレスポンスとして大きなバイト配列を送信する必要があります。次のようにリストを作成しています:
List<List<Byte>> list = new List<List<byte>>();
ここでは、内側のリストはそれぞれ 1000 バイトになります。これはコードです:
int cnt = 0;
List<Byte> innerList = new List<Byte>();
for (int i = 0; i < fileBytes.Length; i++)
{
if (cnt < 1000)
{
Byte b = fileBytes[i];
innerList.Add(b);
cnt++;
if (i == fileBytes.Length - 1)
{
list.Add(innerList);
log.Debug("Remaining:");
log.Debug("List: " + list.Count);
log.Debug("innerList: " + innerList.Count);
}
}
else
{
list.Add(innerList);
log.Debug("Remaining:");
log.Debug("List: " + list.Count);
log.Debug("innerList: " + innerList.Count);
innerList.Clear();
cnt = 0;
}
}
return list;
現在、 によるとlog
、合計カウントはlist
503 で、最初の 502 にはそれぞれ 1000 カウントがあり (これは になりますinnerList
)、503 番目の子リストには54
バイトが含まれています。
これは私のajaxリクエストです:
$.ajax({
type: "GET",
dataType: "jsonp",
contentType: "jsonp",
data: dd,
crossDomain: true,
jsonp: "callback",
url: "http://xxx.xxx.xxx.xx/MyWebService/WebService.svc/MyMethod",
success: function (data) {
console.log(data);
},
complete: function (request, textStatus) { //for additional info
alert(request.responseText);
alert(textStatus);
},
error: function(request, textStatus, errorThrown) {
alert(textStatus);
}
});
リクエストは正常に完了するのですが、firebug
気が付くと、それぞれが(!) キーを持つ jsondata
のsuccess
コレクションとして入っています。最初のjson でキーを取得することになっていたと思いますが、503 番目の json でのみ 54 のキーを取得する必要がありました。何か不足していますか?503
54
1000
502
data