在ajax请求中得到不正确的json响应
本文关键字:不正确 json 响应 ajax 请求 | 更新日期: 2023-09-27 18:09:00
我需要发送大字节数组作为从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' s,子列表包含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
中我注意到,我在success
中得到data
作为503
json的集合,每个json都有54
(!)键。我想我应该在data
的第一个502
json中获得1000
键。只有在第503次,我才会得到54把钥匙。我错过什么了吗?
因为您使用了相同的innerList
实例,该实例的最后长度为54字节。尝试创建新的实例。
例如,用innerList = new List<Byte>();
代替innerList.Clear();
编辑
既然你传递的文件内容json,我猜性能不是你的主要问题。如果是这样,您可以使用下面的Linq(有副作用),它更短,更不容易出错
int cnt = 0;
List<List<byte>> chunks = fileBytes
.GroupBy(x => cnt++ / 1000)
.Select(x => x.ToList())
.ToList();